agileflow 2.61.0 → 2.63.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.
- package/README.md +9 -9
- package/package.json +1 -1
- package/scripts/lib/counter.js +103 -0
- package/src/core/commands/auto.md +1 -0
- package/src/core/commands/babysit.md +170 -29
- package/src/core/commands/board.md +1 -0
- package/src/core/commands/ci.md +1 -0
- package/src/core/commands/compress.md +1 -0
- package/src/core/commands/deploy.md +1 -0
- package/src/core/commands/help.md +1 -0
- package/src/core/commands/research.md +1 -0
- package/src/core/commands/skill/create.md +566 -0
- package/src/core/commands/skill/delete.md +189 -0
- package/src/core/commands/skill/edit.md +245 -0
- package/src/core/commands/skill/list.md +155 -0
- package/src/core/commands/skill/test.md +249 -0
- package/src/core/commands/template.md +1 -0
- package/src/core/commands/tests.md +1 -0
- package/src/core/commands/update.md +1 -0
- package/src/core/commands/velocity.md +1 -0
- package/src/core/experts/refactor/expertise.yaml +17 -12
- package/src/core/templates/claude-settings.advanced.example.json +1 -1
- package/src/core/templates/claude-settings.example.json +1 -1
- package/tools/cli/commands/list.js +8 -13
- package/tools/cli/commands/uninstall.js +70 -0
- package/tools/cli/commands/update.js +21 -4
- package/tools/cli/installers/core/installer.js +20 -19
- package/tools/cli/installers/ide/_base-ide.js +18 -4
- package/tools/cli/installers/ide/claude-code.js +4 -15
- package/tools/cli/installers/ide/codex.js +9 -13
- package/tools/cli/lib/content-injector.js +162 -31
- package/tools/cli/lib/utils.js +87 -0
- package/src/core/skills/acceptance-criteria-generator/SKILL.md +0 -46
- package/src/core/skills/adr-template/SKILL.md +0 -62
- package/src/core/skills/agileflow-acceptance-criteria/SKILL.md +0 -156
- package/src/core/skills/agileflow-adr/SKILL.md +0 -147
- package/src/core/skills/agileflow-adr/examples/database-choice-example.md +0 -122
- package/src/core/skills/agileflow-adr/templates/adr-template.md +0 -69
- package/src/core/skills/agileflow-commit-messages/SKILL.md +0 -130
- package/src/core/skills/agileflow-commit-messages/reference/bad-examples.md +0 -168
- package/src/core/skills/agileflow-commit-messages/reference/good-examples.md +0 -120
- package/src/core/skills/agileflow-commit-messages/scripts/check-attribution.sh +0 -15
- package/src/core/skills/agileflow-epic-planner/SKILL.md +0 -184
- package/src/core/skills/agileflow-retro-facilitator/SKILL.md +0 -119
- package/src/core/skills/agileflow-retro-facilitator/cookbook/4ls.md +0 -86
- package/src/core/skills/agileflow-retro-facilitator/cookbook/glad-sad-mad.md +0 -79
- package/src/core/skills/agileflow-retro-facilitator/cookbook/start-stop-continue.md +0 -142
- package/src/core/skills/agileflow-retro-facilitator/prompts/action-items.md +0 -83
- package/src/core/skills/agileflow-sprint-planner/SKILL.md +0 -212
- package/src/core/skills/agileflow-story-writer/SKILL.md +0 -163
- package/src/core/skills/agileflow-story-writer/examples/good-story-example.md +0 -63
- package/src/core/skills/agileflow-story-writer/templates/story-template.md +0 -44
- package/src/core/skills/agileflow-tech-debt/SKILL.md +0 -215
- package/src/core/skills/api-documentation-generator/SKILL.md +0 -65
- package/src/core/skills/changelog-entry/SKILL.md +0 -55
- package/src/core/skills/commit-message-formatter/SKILL.md +0 -50
- package/src/core/skills/deployment-guide-generator/SKILL.md +0 -84
- package/src/core/skills/diagram-generator/SKILL.md +0 -65
- package/src/core/skills/error-handler-template/SKILL.md +0 -78
- package/src/core/skills/migration-checklist/SKILL.md +0 -82
- package/src/core/skills/pr-description/SKILL.md +0 -65
- package/src/core/skills/sql-schema-generator/SKILL.md +0 -69
- package/src/core/skills/story-skeleton/SKILL.md +0 -34
- package/src/core/skills/test-case-generator/SKILL.md +0 -63
- package/src/core/skills/type-definitions/SKILL.md +0 -65
- package/src/core/skills/validation-schema-generator/SKILL.md +0 -64
- package/src/core/skills/writing-skills/SKILL.md +0 -352
- package/src/core/skills/writing-skills/testing-skills-with-subagents.md +0 -232
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: agileflow-acceptance-criteria
|
|
3
|
-
description: Generates detailed Given/When/Then acceptance criteria when user describes feature behavior or requirements. Enhances user stories with testable scenarios.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# AgileFlow Acceptance Criteria
|
|
7
|
-
|
|
8
|
-
Automatically generates detailed, testable acceptance criteria in Given/When/Then (Gherkin) format from feature discussions and requirements.
|
|
9
|
-
|
|
10
|
-
## When to Use
|
|
11
|
-
|
|
12
|
-
This skill activates when:
|
|
13
|
-
- User describes how a feature should behave
|
|
14
|
-
- Discussing user workflows or interactions
|
|
15
|
-
- Keywords: "acceptance criteria", "test scenarios", "should work like"
|
|
16
|
-
- Creating or reviewing user stories
|
|
17
|
-
- User describes "when user does X, then Y should happen"
|
|
18
|
-
|
|
19
|
-
## What This Does
|
|
20
|
-
|
|
21
|
-
1. Extracts feature behavior from user discussions
|
|
22
|
-
2. Identifies different scenarios (happy path, errors, edge cases)
|
|
23
|
-
3. Generates criteria in Given/When/Then format
|
|
24
|
-
4. Ensures criteria are specific, testable, and independent
|
|
25
|
-
5. Enhances story's AC section
|
|
26
|
-
|
|
27
|
-
## Instructions
|
|
28
|
-
|
|
29
|
-
1. **Listen for behavior descriptions**: User explains "when X happens, Y should occur"
|
|
30
|
-
|
|
31
|
-
2. **Extract scenarios**:
|
|
32
|
-
- Happy path (normal use)
|
|
33
|
-
- Error cases (what goes wrong)
|
|
34
|
-
- Edge cases (boundary conditions)
|
|
35
|
-
- Permission-based scenarios
|
|
36
|
-
|
|
37
|
-
3. **Generate criteria**:
|
|
38
|
-
- One AC per distinct scenario
|
|
39
|
-
- Clear, unambiguous language
|
|
40
|
-
- Make it testable (observable outcome)
|
|
41
|
-
- Include edge cases
|
|
42
|
-
|
|
43
|
-
4. **Add to story**: If working on a story, enhance its AC section
|
|
44
|
-
|
|
45
|
-
## Given/When/Then Format
|
|
46
|
-
|
|
47
|
-
```markdown
|
|
48
|
-
### AC#: [Criterion Name]
|
|
49
|
-
**Given** [initial context or precondition]
|
|
50
|
-
**When** [user action or trigger event]
|
|
51
|
-
**Then** [expected outcome or system behavior]
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**Given** (Precondition):
|
|
55
|
-
- User's current state, system state, data that exists, permissions/roles
|
|
56
|
-
- Example: "Given I am logged in as an admin"
|
|
57
|
-
|
|
58
|
-
**When** (Action):
|
|
59
|
-
- What the user does, event that occurs, API call made
|
|
60
|
-
- Example: "When I click the 'Add to Cart' button"
|
|
61
|
-
|
|
62
|
-
**Then** (Outcome):
|
|
63
|
-
- What the user sees, system state changes, data modifications, error messages
|
|
64
|
-
- Example: "Then the item is added to my cart"
|
|
65
|
-
|
|
66
|
-
## Common Patterns
|
|
67
|
-
|
|
68
|
-
**Happy Path**:
|
|
69
|
-
```markdown
|
|
70
|
-
### AC1: Successful Login
|
|
71
|
-
**Given** I am on the login page
|
|
72
|
-
**When** I enter valid credentials and click "Login"
|
|
73
|
-
**Then** I am redirected to my dashboard
|
|
74
|
-
**And** I see a welcome message with my name
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**Error Handling**:
|
|
78
|
-
```markdown
|
|
79
|
-
### AC2: Invalid Password
|
|
80
|
-
**Given** I am on the login page
|
|
81
|
-
**When** I enter a valid email but incorrect password
|
|
82
|
-
**Then** I see an error message "Invalid credentials"
|
|
83
|
-
**And** I remain on the login page
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
**Edge Cases**:
|
|
87
|
-
```markdown
|
|
88
|
-
### AC3: Account Locked After Failed Attempts
|
|
89
|
-
**Given** I have failed to login 4 times
|
|
90
|
-
**When** I attempt to login with incorrect password again
|
|
91
|
-
**Then** my account is locked for 30 minutes
|
|
92
|
-
**And** an email is sent to my registered address
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
**Permission-Based**:
|
|
96
|
-
```markdown
|
|
97
|
-
### AC4: Admin-Only Feature Access
|
|
98
|
-
**Given** I am logged in as a regular user
|
|
99
|
-
**When** I try to access the admin dashboard
|
|
100
|
-
**Then** I see a 403 Forbidden error
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
**Form Validation**:
|
|
104
|
-
```markdown
|
|
105
|
-
### AC1: Email Format Validation
|
|
106
|
-
**Given** I am filling out the registration form
|
|
107
|
-
**When** I enter an invalid email format (missing @)
|
|
108
|
-
**Then** I see an error "Please enter a valid email address"
|
|
109
|
-
**And** the submit button remains disabled
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## Multiple Conditions
|
|
113
|
-
|
|
114
|
-
Use **And** for additional conditions:
|
|
115
|
-
```markdown
|
|
116
|
-
**Given** I am logged in
|
|
117
|
-
**And** I have items in my cart
|
|
118
|
-
**When** I click "Checkout"
|
|
119
|
-
**Then** I am redirected to payment page
|
|
120
|
-
**And** I see my cart summary
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
Use **But** for contrasting outcomes:
|
|
124
|
-
```markdown
|
|
125
|
-
**Given** I am on the search page
|
|
126
|
-
**When** I search for "nonexistent product"
|
|
127
|
-
**Then** I see "No results found" message
|
|
128
|
-
**But** I see suggested categories
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
## Quality Checklist
|
|
132
|
-
|
|
133
|
-
Good acceptance criteria are:
|
|
134
|
-
- [ ] **Specific**: Clearly describes one scenario
|
|
135
|
-
- [ ] **Testable**: Can be verified with a test
|
|
136
|
-
- [ ] **Independent**: Doesn't depend on order of execution
|
|
137
|
-
- [ ] **Unambiguous**: Only one interpretation possible
|
|
138
|
-
- [ ] **Complete**: Covers happy path, errors, and edge cases
|
|
139
|
-
- [ ] **User-focused**: Written from user's perspective
|
|
140
|
-
- [ ] **3-7 criteria per story**: Enough coverage, not excessive
|
|
141
|
-
|
|
142
|
-
## Integration
|
|
143
|
-
|
|
144
|
-
- **agileflow-story-writer**: Automatically enhances story AC sections
|
|
145
|
-
- **agileflow-sprint-planner**: Helps estimate story complexity from AC count
|
|
146
|
-
- **agileflow-tech-debt**: Identifies missing test coverage from AC
|
|
147
|
-
|
|
148
|
-
## Notes
|
|
149
|
-
|
|
150
|
-
- Aim for 3-7 acceptance criteria per story
|
|
151
|
-
- Too few = incomplete requirements
|
|
152
|
-
- Too many = story should be split
|
|
153
|
-
- Cover at least one error case per story
|
|
154
|
-
- Include accessibility criteria when relevant
|
|
155
|
-
- Consider mobile vs desktop differences
|
|
156
|
-
- Think about internationalization if applicable
|
|
@@ -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
|