agileflow 2.61.0 → 2.62.0

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.
Files changed (66) hide show
  1. package/README.md +9 -9
  2. package/package.json +1 -1
  3. package/scripts/lib/counter.js +103 -0
  4. package/src/core/commands/auto.md +1 -0
  5. package/src/core/commands/babysit.md +170 -29
  6. package/src/core/commands/board.md +1 -0
  7. package/src/core/commands/ci.md +1 -0
  8. package/src/core/commands/compress.md +1 -0
  9. package/src/core/commands/deploy.md +1 -0
  10. package/src/core/commands/help.md +1 -0
  11. package/src/core/commands/research.md +1 -0
  12. package/src/core/commands/skill/create.md +566 -0
  13. package/src/core/commands/skill/delete.md +189 -0
  14. package/src/core/commands/skill/edit.md +245 -0
  15. package/src/core/commands/skill/list.md +155 -0
  16. package/src/core/commands/skill/test.md +249 -0
  17. package/src/core/commands/template.md +1 -0
  18. package/src/core/commands/tests.md +1 -0
  19. package/src/core/commands/update.md +1 -0
  20. package/src/core/commands/velocity.md +1 -0
  21. package/src/core/experts/refactor/expertise.yaml +17 -12
  22. package/src/core/templates/claude-settings.advanced.example.json +1 -1
  23. package/src/core/templates/claude-settings.example.json +1 -1
  24. package/tools/cli/commands/list.js +8 -13
  25. package/tools/cli/installers/core/installer.js +20 -19
  26. package/tools/cli/installers/ide/_base-ide.js +18 -4
  27. package/tools/cli/installers/ide/claude-code.js +4 -15
  28. package/tools/cli/installers/ide/codex.js +9 -13
  29. package/tools/cli/lib/content-injector.js +162 -31
  30. package/tools/cli/lib/utils.js +87 -0
  31. package/src/core/skills/acceptance-criteria-generator/SKILL.md +0 -46
  32. package/src/core/skills/adr-template/SKILL.md +0 -62
  33. package/src/core/skills/agileflow-acceptance-criteria/SKILL.md +0 -156
  34. package/src/core/skills/agileflow-adr/SKILL.md +0 -147
  35. package/src/core/skills/agileflow-adr/examples/database-choice-example.md +0 -122
  36. package/src/core/skills/agileflow-adr/templates/adr-template.md +0 -69
  37. package/src/core/skills/agileflow-commit-messages/SKILL.md +0 -130
  38. package/src/core/skills/agileflow-commit-messages/reference/bad-examples.md +0 -168
  39. package/src/core/skills/agileflow-commit-messages/reference/good-examples.md +0 -120
  40. package/src/core/skills/agileflow-commit-messages/scripts/check-attribution.sh +0 -15
  41. package/src/core/skills/agileflow-epic-planner/SKILL.md +0 -184
  42. package/src/core/skills/agileflow-retro-facilitator/SKILL.md +0 -119
  43. package/src/core/skills/agileflow-retro-facilitator/cookbook/4ls.md +0 -86
  44. package/src/core/skills/agileflow-retro-facilitator/cookbook/glad-sad-mad.md +0 -79
  45. package/src/core/skills/agileflow-retro-facilitator/cookbook/start-stop-continue.md +0 -142
  46. package/src/core/skills/agileflow-retro-facilitator/prompts/action-items.md +0 -83
  47. package/src/core/skills/agileflow-sprint-planner/SKILL.md +0 -212
  48. package/src/core/skills/agileflow-story-writer/SKILL.md +0 -163
  49. package/src/core/skills/agileflow-story-writer/examples/good-story-example.md +0 -63
  50. package/src/core/skills/agileflow-story-writer/templates/story-template.md +0 -44
  51. package/src/core/skills/agileflow-tech-debt/SKILL.md +0 -215
  52. package/src/core/skills/api-documentation-generator/SKILL.md +0 -65
  53. package/src/core/skills/changelog-entry/SKILL.md +0 -55
  54. package/src/core/skills/commit-message-formatter/SKILL.md +0 -50
  55. package/src/core/skills/deployment-guide-generator/SKILL.md +0 -84
  56. package/src/core/skills/diagram-generator/SKILL.md +0 -65
  57. package/src/core/skills/error-handler-template/SKILL.md +0 -78
  58. package/src/core/skills/migration-checklist/SKILL.md +0 -82
  59. package/src/core/skills/pr-description/SKILL.md +0 -65
  60. package/src/core/skills/sql-schema-generator/SKILL.md +0 -69
  61. package/src/core/skills/story-skeleton/SKILL.md +0 -34
  62. package/src/core/skills/test-case-generator/SKILL.md +0 -63
  63. package/src/core/skills/type-definitions/SKILL.md +0 -65
  64. package/src/core/skills/validation-schema-generator/SKILL.md +0 -64
  65. package/src/core/skills/writing-skills/SKILL.md +0 -352
  66. package/src/core/skills/writing-skills/testing-skills-with-subagents.md +0 -232
@@ -1,147 +0,0 @@
1
- ---
2
- name: agileflow-adr
3
- description: Detects architectural or technical decisions in conversations and formats them as Architecture Decision Records in docs/03-decisions/. Loads when discussing technology choices, architecture patterns, or trade-offs.
4
- ---
5
-
6
- # AgileFlow ADR (Architecture Decision Records)
7
-
8
- Automatically captures architectural and technical decisions and formats them as formal Architecture Decision Records (ADRs) in `docs/03-decisions/`.
9
-
10
- ## When to Use
11
-
12
- This skill activates when:
13
- - Discussing technology choices ("Should we use PostgreSQL or MongoDB?")
14
- - Debating architecture patterns ("REST vs GraphQL")
15
- - Making framework decisions ("React vs Vue")
16
- - Discussing infrastructure choices ("AWS vs GCP")
17
- - Evaluating trade-offs between options
18
- - Keywords: "decision", "choose", "architecture", "trade-off"
19
-
20
- ## What This Does
21
-
22
- 1. Detects architectural decision discussions from conversations
23
- 2. Asks clarifying questions if needed (context, options, constraints)
24
- 3. Extracts decision elements (problem, options, drivers, trade-offs)
25
- 4. Generates properly formatted ADR file
26
- 5. Shows for approval before writing
27
-
28
- ## Instructions
29
-
30
- 1. **Detect decision discussion**: User is debating options or asking "which should we use?"
31
-
32
- 2. **Extract decision elements**:
33
- - Context/problem statement
34
- - Options being considered
35
- - Trade-offs for each option
36
- - Decision drivers (requirements, constraints)
37
-
38
- 3. **Read existing ADRs**:
39
- - Check `docs/03-decisions/` for numbering
40
- - Look for related decisions
41
-
42
- 4. **Generate ADR**:
43
- - File: `docs/03-decisions/ADR-###-descriptive-title.md`
44
- - Use MADR (Markdown Architecture Decision Records) format
45
- - Mark status as "Proposed" unless decision is final
46
-
47
- 5. **Confirm with user**: Show the ADR and ask for corrections
48
-
49
- ## ADR Format (MADR)
50
-
51
- ```markdown
52
- # [ADR-###] Title
53
-
54
- **Date**: YYYY-MM-DD
55
- **Status**: Proposed | Accepted | Deprecated | Superseded
56
- **Deciders**: Names of people involved
57
- **Tags**: architecture, database, api, etc.
58
-
59
- ## Context and Problem Statement
60
-
61
- [Describe the context and problem. What are we trying to solve? Why necessary?]
62
-
63
- ## Decision Drivers
64
-
65
- - [Driver 1: e.g., Performance requirements]
66
- - [Driver 2: e.g., Team expertise]
67
- - [Driver 3: e.g., Cost constraints]
68
-
69
- ## Considered Options
70
-
71
- - [Option 1]
72
- - [Option 2]
73
- - [Option 3]
74
-
75
- ## Decision Outcome
76
-
77
- **Chosen option**: [Option X]
78
-
79
- **Justification**: [Why chosen? What makes it best fit?]
80
-
81
- ### Positive Consequences
82
-
83
- - [Good outcome 1]
84
- - [Good outcome 2]
85
-
86
- ### Negative Consequences
87
-
88
- - [Bad outcome 1]
89
- - [Bad outcome 2 - with mitigation if possible]
90
-
91
- ## Pros and Cons of the Options
92
-
93
- ### [Option 1]
94
-
95
- **Pros**:
96
- - [Pro 1]
97
- - [Pro 2]
98
-
99
- **Cons**:
100
- - [Con 1]
101
- - [Con 2]
102
-
103
- ## Links
104
-
105
- - [Related ADRs]
106
- - [Relevant documentation]
107
- - [External resources]
108
-
109
- ## Notes
110
-
111
- - [Additional information]
112
- - [Implementation notes]
113
- ```
114
-
115
- ## ADR Statuses
116
-
117
- - **Proposed**: Under consideration, not yet decided
118
- - **Accepted**: Decision made and approved
119
- - **Deprecated**: No longer relevant (but kept for history)
120
- - **Superseded**: Replaced by a newer decision (link to new ADR)
121
-
122
- ## Quality Checklist
123
-
124
- Before creating ADR:
125
- - [ ] Problem statement is clear and specific
126
- - [ ] At least 2 options were considered
127
- - [ ] Each option has pros and cons listed
128
- - [ ] Decision drivers are explicitly stated
129
- - [ ] Chosen option has clear justification
130
- - [ ] Consequences (both positive and negative) documented
131
- - [ ] File name follows pattern: ADR-###-descriptive-title.md
132
- - [ ] Status is appropriate (Proposed/Accepted)
133
-
134
- ## Integration
135
-
136
- - **agileflow-story-writer**: ADRs inform technical notes in stories
137
- - **agileflow-tech-debt**: Negative consequences become tech debt items
138
- - **agileflow-changelog**: Major decisions appear in changelog
139
-
140
- ## Notes
141
-
142
- - Capture decisions even if they seem small - they provide context later
143
- - Be honest about negative consequences - helps with future decisions
144
- - Include who made the decision (deciders) - accountability matters
145
- - Date decisions - context changes over time
146
- - Keep ADRs focused - one decision per ADR
147
- - ADRs are immutable once accepted - create new ADR if superseding
@@ -1,122 +0,0 @@
1
- # [ADR-012] Use PostgreSQL for Primary Database
2
-
3
- **Date**: 2025-01-15
4
- **Status**: Accepted
5
- **Deciders**: Tech Lead, Backend Team, DevOps
6
- **Tags**: database, architecture, backend
7
-
8
- ## Context and Problem Statement
9
-
10
- Our application needs a primary database to store user data, transactions, and analytics. We need to choose a database that supports complex queries, transactions, and can scale with our growing user base (currently 10K users, expecting 100K+ within 6 months).
11
-
12
- ## Decision Drivers
13
-
14
- - **Strong ACID compliance** - Financial transactions require data integrity
15
- - **Complex query support** - Analytics require joins and aggregations
16
- - **Team expertise** - Team has SQL experience but limited NoSQL experience
17
- - **Cost** - Must fit within infrastructure budget (~$200/month)
18
- - **Scalability** - Need to handle 10x growth over 6 months
19
- - **Operational overhead** - Limited DevOps resources for maintenance
20
-
21
- ## Considered Options
22
-
23
- - PostgreSQL
24
- - MongoDB
25
- - MySQL
26
-
27
- ## Decision Outcome
28
-
29
- **Chosen option**: PostgreSQL
30
-
31
- **Justification**: PostgreSQL offers the best balance of ACID compliance, query flexibility, and team expertise. While MongoDB could handle our document-like user profiles well, the financial transaction requirements demand strong consistency guarantees. PostgreSQL's JSON support gives us flexibility for semi-structured data without sacrificing transactional integrity.
32
-
33
- ### Positive Consequences
34
-
35
- - Strong ACID guarantees protect financial data
36
- - Team can leverage existing SQL knowledge immediately
37
- - Rich ecosystem of tools (pg Admin, extensions, ORMs)
38
- - JSON/JSONB support provides flexibility for evolving schemas
39
- - Excellent performance for our expected load (<1M rows initially)
40
- - Free and open source - no licensing costs
41
- - Proven scalability path (read replicas, partitioning, Citus extension)
42
-
43
- ### Negative Consequences
44
-
45
- - Vertical scaling limits eventually require sharding strategy
46
- - Less flexible schema changes compared to schema-less databases
47
- - Requires careful query optimization for complex analytics
48
- - Team needs to learn PostgreSQL-specific features (JSONB, window functions)
49
-
50
- ## Pros and Cons of the Options
51
-
52
- ### PostgreSQL
53
-
54
- **Pros**:
55
- - ✅ Strong ACID compliance with serializable isolation
56
- - ✅ Excellent support for complex queries (JOINs, CTEs, window functions)
57
- - ✅ JSONB for flexible semi-structured data
58
- - ✅ Rich extension ecosystem (PostGIS, pg_trgm, etc.)
59
- - ✅ Free and open source
60
- - ✅ Battle-tested at scale (Instagram, Spotify, GitHub use it)
61
- - ✅ Team has SQL experience
62
-
63
- **Cons**:
64
- - ❌ Vertical scaling limits (~10M rows before needing partitioning)
65
- - ❌ Schema migrations require downtime for large tables
66
- - ❌ Write performance lower than NoSQL for high-throughput scenarios
67
- - ❌ Replication complexity for multi-region deployment
68
-
69
- ### MongoDB
70
-
71
- **Pros**:
72
- - ✅ Flexible schema for rapidly evolving data models
73
- - ✅ Horizontal scaling built-in (sharding)
74
- - ✅ Fast writes for high-throughput scenarios
75
- - ✅ Good for document-oriented data (user profiles, products)
76
- - ✅ Built-in replication and failover
77
-
78
- **Cons**:
79
- - ❌ Weaker consistency guarantees (eventual consistency by default)
80
- - ❌ Limited transaction support (only multi-document ACID since v4.0)
81
- - ❌ Team has no MongoDB experience (3-6 month learning curve)
82
- - ❌ More expensive managed hosting (~$400/month vs $200 for PostgreSQL)
83
- - ❌ Complex queries less efficient (no JOINs)
84
- - ❌ Analytics require aggregation pipeline (steep learning curve)
85
-
86
- ### MySQL
87
-
88
- **Pros**:
89
- - ✅ Strong ACID compliance
90
- - ✅ Widely used and well-documented
91
- - ✅ Team has SQL experience
92
- - ✅ Good performance for read-heavy workloads
93
- - ✅ Free and open source
94
-
95
- **Cons**:
96
- - ❌ Weaker JSON support compared to PostgreSQL
97
- - ❌ Less feature-rich (no CTEs until v8.0, weaker window functions)
98
- - ❌ Replication can be complex (binlog issues)
99
- - ❌ Extension ecosystem less rich than PostgreSQL
100
- - ❌ Oracle ownership concerns (licensing changes)
101
-
102
- ## Links
103
-
104
- - [PostgreSQL JSON Support](https://www.postgresql.org/docs/current/datatype-json.html)
105
- - [Scalability Guide](docs/architecture/postgres-scaling.md)
106
- - [Database Schema Design](docs/architecture/schema-design.md)
107
- - Related: [ADR-013: Use Prisma ORM](./ADR-013-use-prisma-orm.md)
108
-
109
- ## Notes
110
-
111
- - **Migration path**: If we hit PostgreSQL scaling limits (>10M users), we'll evaluate:
112
- 1. Citus extension for horizontal scaling
113
- 2. Read replicas for read-heavy queries
114
- 3. Vertical scaling to larger instances
115
-
116
- - **Review date**: 2025-06-15 (6 months) - Assess if decision still holds with actual usage data
117
-
118
- - **Monitoring**: Set up alerts for:
119
- - Query performance degradation
120
- - Table size growth
121
- - Replication lag
122
- - Connection pool exhaustion
@@ -1,69 +0,0 @@
1
- # [ADR-###] {Title}
2
-
3
- **Date**: {YYYY-MM-DD}
4
- **Status**: {Proposed | Accepted | Deprecated | Superseded}
5
- **Deciders**: {Names}
6
- **Tags**: {tag1, tag2}
7
-
8
- ## Context and Problem Statement
9
-
10
- {Describe the context and problem}
11
-
12
- ## Decision Drivers
13
-
14
- - {Driver 1}
15
- - {Driver 2}
16
- - {Driver 3}
17
-
18
- ## Considered Options
19
-
20
- - {Option 1}
21
- - {Option 2}
22
- - {Option 3}
23
-
24
- ## Decision Outcome
25
-
26
- **Chosen option**: {Option X}
27
-
28
- **Justification**: {Why this option}
29
-
30
- ### Positive Consequences
31
-
32
- - {Good outcome 1}
33
- - {Good outcome 2}
34
-
35
- ### Negative Consequences
36
-
37
- - {Bad outcome 1}
38
- - {Bad outcome 2}
39
-
40
- ## Pros and Cons of the Options
41
-
42
- ### {Option 1}
43
-
44
- **Pros**:
45
- - {Pro 1}
46
- - {Pro 2}
47
-
48
- **Cons**:
49
- - {Con 1}
50
- - {Con 2}
51
-
52
- ### {Option 2}
53
-
54
- **Pros**:
55
- - {Pro 1}
56
- - {Pro 2}
57
-
58
- **Cons**:
59
- - {Con 1}
60
- - {Con 2}
61
-
62
- ## Links
63
-
64
- - {Related ADRs}
65
- - {Documentation}
66
-
67
- ## Notes
68
-
69
- - {Additional information}
@@ -1,130 +0,0 @@
1
- ---
2
- name: agileflow-commit-messages
3
- description: Formats git commit messages following Conventional Commits and respects user's attribution preferences from CLAUDE.md
4
- ---
5
-
6
- # Conventional Commits Skill
7
-
8
- Automatically formats git commit messages following the Conventional Commits specification while respecting the user's attribution policy defined in CLAUDE.md.
9
-
10
- ## When to Use
11
-
12
- This skill activates when:
13
- - Creating or staging git commits
14
- - Discussing code changes that need committing
15
- - Keywords: "commit", "git commit", "conventional commit", "commit message"
16
-
17
- ## What This Does
18
-
19
- 1. Checks CLAUDE.md for attribution policy (respects user preferences)
20
- 2. Analyzes staged changes to determine commit type and scope
21
- 3. Formats message using Conventional Commits format
22
- 4. Shows message to user for approval before executing
23
-
24
- ## Instructions
25
-
26
- 1. **Check attribution policy**:
27
- - Read CLAUDE.md for "Git Commit Attribution Policy"
28
- - If "DO NOT ADD AI ATTRIBUTION" found → skip footer
29
- - Otherwise → prepare attribution footer
30
-
31
- 2. **Analyze changes**:
32
- - Run `git diff --cached --stat` to see staged files
33
- - Determine primary change type (feat, fix, refactor, etc.)
34
- - Identify affected scope (api, ui, auth, db, config, etc.)
35
-
36
- 3. **Format message**:
37
- ```
38
- <type>(<scope>): <subject>
39
-
40
- <body>
41
-
42
- <footer>
43
- ```
44
-
45
- 4. **Show for approval**: Display formatted message (diff-first pattern)
46
-
47
- 5. **Execute after confirmation**: Run git commit with user's YES
48
-
49
- ## Conventional Commits Format
50
-
51
- **Types**: feat, fix, docs, style, refactor, perf, test, chore, ci, revert
52
-
53
- **Scope (optional)**: (api), (ui), (auth), (db), (config), etc.
54
-
55
- **Subject rules**:
56
- - Imperative mood: "add feature" not "added feature"
57
- - Lowercase, no period, max 50 characters
58
-
59
- **Body (optional)**:
60
- - Explain WHAT and WHY (not HOW)
61
- - Wrap at 72 characters per line
62
-
63
- **Footer (optional)**:
64
- - Issue references: `Closes #123`
65
- - Breaking changes: `BREAKING CHANGE: description`
66
- - Attribution: Add if CLAUDE.md allows
67
-
68
- ## Output Examples
69
-
70
- **WITH attribution** (default):
71
- ```
72
- feat(auth): add two-factor authentication
73
-
74
- Implemented TOTP-based 2FA with QR code generation
75
- for enhanced user account security.
76
-
77
- Closes #234
78
-
79
- 🤖 Generated with [Claude Code](https://claude.com/claude-code)
80
-
81
- Co-Authored-By: Claude <noreply@anthropic.com>
82
- ```
83
-
84
- **WITHOUT attribution** (if CLAUDE.md specifies):
85
- ```
86
- feat(auth): add two-factor authentication
87
-
88
- Implemented TOTP-based 2FA with QR code generation
89
- for enhanced user account security.
90
-
91
- Closes #234
92
- ```
93
-
94
- **Breaking changes**:
95
- ```
96
- feat(api)!: change authentication endpoint structure
97
-
98
- BREAKING CHANGE: The /auth/login endpoint now returns
99
- a different response format.
100
-
101
- Old: { token: "..." }
102
- New: { accessToken: "...", refreshToken: "...", expiresIn: 3600 }
103
-
104
- Closes #456
105
- ```
106
-
107
- ## Quality Checklist
108
-
109
- Before suggesting commit message:
110
- - [ ] Type is appropriate (feat/fix/refactor/docs/chore)
111
- - [ ] Subject uses imperative mood
112
- - [ ] Subject is lowercase, <50 chars, no period
113
- - [ ] Body explains WHY, wrapped at 72 chars
114
- - [ ] **Attribution policy checked in CLAUDE.md** (CRITICAL)
115
- - [ ] No secrets in staged files (.env, tokens, credentials)
116
- - [ ] Breaking changes marked with `!` and `BREAKING CHANGE:` footer
117
-
118
- ## Integration
119
-
120
- - **agileflow-changelog**: Commit messages inform changelog entries
121
- - **agileflow-story-writer**: Reference story IDs in commits (Closes STORY-042)
122
- - **agileflow-adr**: Link ADRs in footer (Refs: ADR-0005)
123
-
124
- ## Notes
125
-
126
- - ALWAYS check CLAUDE.md first for attribution preferences
127
- - For large commits, suggest breaking into smaller logical commits
128
- - Keep line lengths: subject <50 chars, body <72 chars
129
- - Check for secrets before committing (.env, credentials.json, API keys)
130
- - Security check: Warn user if sensitive files are staged
@@ -1,168 +0,0 @@
1
- # Bad Commit Message Examples (and How to Fix Them)
2
-
3
- ## ❌ Too Vague
4
-
5
- ```
6
- fix: fix bug
7
- ```
8
-
9
- **Problem**: Doesn't explain what bug was fixed
10
- **Better**:
11
- ```
12
- fix(auth): prevent session timeout during active use
13
-
14
- Fixed bug where user sessions expired after 30 minutes
15
- even during active usage. Now sessions extend while user
16
- is interacting with the application.
17
-
18
- Fixes #456
19
- ```
20
-
21
- ## ❌ Wrong Tense
22
-
23
- ```
24
- feat: added dark mode
25
- ```
26
-
27
- **Problem**: Should be imperative mood ("add" not "added")
28
- **Better**:
29
- ```
30
- feat(ui): add dark mode toggle
31
-
32
- Implemented dark mode with localStorage persistence
33
- and system preference detection.
34
-
35
- Closes #789
36
- ```
37
-
38
- ## ❌ Subject Too Long
39
-
40
- ```
41
- feat: add a new user profile editing feature that allows users to update their name, email, and profile picture
42
- ```
43
-
44
- **Problem**: Subject exceeds 50 characters, should be concise
45
- **Better**:
46
- ```
47
- feat(profile): add user profile editing
48
-
49
- Users can now update their name, email, and profile
50
- picture from the settings page. Changes are validated
51
- server-side and saved to the database.
52
-
53
- Closes #123
54
- ```
55
-
56
- ## ❌ No Type
57
-
58
- ```
59
- update README
60
- ```
61
-
62
- **Problem**: Missing type prefix
63
- **Better**:
64
- ```
65
- docs(readme): add API authentication examples
66
-
67
- Added code examples showing how to authenticate API
68
- requests using JWT tokens.
69
- ```
70
-
71
- ## ❌ Multiple Unrelated Changes
72
-
73
- ```
74
- feat: add login and fix cart bug and update dependencies
75
- ```
76
-
77
- **Problem**: Should be 3 separate commits
78
- **Better**: Split into:
79
- ```
80
- feat(auth): add user login functionality
81
- ```
82
- ```
83
- fix(cart): resolve item duplication issue
84
- ```
85
- ```
86
- chore(deps): update npm packages to latest versions
87
- ```
88
-
89
- ## ❌ Description of HOW Instead of WHY
90
-
91
- ```
92
- fix: changed if statement to switch statement
93
- ```
94
-
95
- **Problem**: Describes implementation detail, not the reason
96
- **Better**:
97
- ```
98
- refactor(validation): simplify input validation logic
99
-
100
- Replaced nested if statements with switch statement
101
- for better readability and easier maintenance. No
102
- functional changes.
103
- ```
104
-
105
- ## ❌ Capitalized Subject
106
-
107
- ```
108
- feat: Add Dark Mode Support
109
- ```
110
-
111
- **Problem**: Subject should be lowercase
112
- **Better**:
113
- ```
114
- feat(ui): add dark mode support
115
- ```
116
-
117
- ## ❌ Period at End of Subject
118
-
119
- ```
120
- fix: resolve login timeout issue.
121
- ```
122
-
123
- **Problem**: Subject shouldn't end with period
124
- **Better**:
125
- ```
126
- fix(auth): resolve login timeout issue
127
-
128
- Increased session timeout from 15 to 30 minutes to
129
- prevent premature logouts during form filling.
130
-
131
- Fixes #567
132
- ```
133
-
134
- ## ❌ No Context
135
-
136
- ```
137
- fix: it works now
138
- ```
139
-
140
- **Problem**: Completely uninformative
141
- **Better**:
142
- ```
143
- fix(payment): resolve Stripe webhook signature validation
144
-
145
- Fixed HMAC signature verification by using raw request
146
- body instead of parsed JSON. Webhooks now process correctly.
147
-
148
- Fixes #890
149
- ```
150
-
151
- ## ❌ Missing Issue Reference
152
-
153
- ```
154
- feat: add two-factor authentication
155
-
156
- Implemented TOTP-based 2FA with QR code generation.
157
- ```
158
-
159
- **Problem**: Should reference the issue/story
160
- **Better**:
161
- ```
162
- feat(auth): add two-factor authentication
163
-
164
- Implemented TOTP-based 2FA with QR code generation
165
- for enhanced account security.
166
-
167
- Closes #234, STORY-042
168
- ```