sqlew 3.6.5 → 3.6.7

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 (61) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/LICENSE +52 -52
  3. package/README.md +3 -2
  4. package/assets/sample-agents/sqlew-architect.md +89 -273
  5. package/assets/sample-agents/sqlew-researcher.md +87 -237
  6. package/assets/sample-agents/sqlew-scrum-master.md +105 -108
  7. package/dist/index.js +32 -71
  8. package/dist/index.js.map +1 -1
  9. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -1
  10. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js +49 -34
  11. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -1
  12. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +1 -1
  13. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js +211 -175
  14. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js.map +1 -1
  15. package/dist/tests/all-features.test.js +0 -71
  16. package/dist/tests/all-features.test.js.map +1 -1
  17. package/dist/tests/parameter-validation.test.d.ts +8 -0
  18. package/dist/tests/parameter-validation.test.d.ts.map +1 -0
  19. package/dist/tests/parameter-validation.test.js +461 -0
  20. package/dist/tests/parameter-validation.test.js.map +1 -0
  21. package/dist/tools/constraints.d.ts.map +1 -1
  22. package/dist/tools/constraints.js +7 -8
  23. package/dist/tools/constraints.js.map +1 -1
  24. package/dist/tools/context.d.ts.map +1 -1
  25. package/dist/tools/context.js +68 -39
  26. package/dist/tools/context.js.map +1 -1
  27. package/dist/tools/files.d.ts.map +1 -1
  28. package/dist/tools/files.js +9 -7
  29. package/dist/tools/files.js.map +1 -1
  30. package/dist/tools/help-queries.d.ts.map +1 -1
  31. package/dist/tools/help-queries.js +20 -14
  32. package/dist/tools/help-queries.js.map +1 -1
  33. package/dist/tools/messaging.d.ts +1 -1
  34. package/dist/tools/messaging.js +10 -10
  35. package/dist/tools/tasks.d.ts.map +1 -1
  36. package/dist/tools/tasks.js +13 -0
  37. package/dist/tools/tasks.js.map +1 -1
  38. package/dist/tools/utils.d.ts.map +1 -1
  39. package/dist/tools/utils.js +15 -12
  40. package/dist/tools/utils.js.map +1 -1
  41. package/dist/types.d.ts +93 -1
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/utils/action-specs.d.ts +46 -0
  44. package/dist/utils/action-specs.d.ts.map +1 -0
  45. package/dist/utils/action-specs.js +527 -0
  46. package/dist/utils/action-specs.js.map +1 -0
  47. package/dist/utils/error-handler.d.ts.map +1 -1
  48. package/dist/utils/error-handler.js +41 -24
  49. package/dist/utils/error-handler.js.map +1 -1
  50. package/dist/utils/parameter-validator.d.ts +53 -0
  51. package/dist/utils/parameter-validator.d.ts.map +1 -0
  52. package/dist/utils/parameter-validator.js +286 -0
  53. package/dist/utils/parameter-validator.js.map +1 -0
  54. package/docs/BEST_PRACTICES.md +69 -0
  55. package/docs/CONFIGURATION.md +35 -19
  56. package/docs/TOOL_REFERENCE.md +178 -0
  57. package/package.json +83 -84
  58. package/dist/tools/config.d.ts +0 -50
  59. package/dist/tools/config.d.ts.map +0 -1
  60. package/dist/tools/config.js +0 -170
  61. package/dist/tools/config.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,57 @@ All notable changes to sqlew will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ---
9
+
10
+ ## [3.6.7] - 2025-10-30
11
+
12
+ ### Fixed - Dependency Update
13
+
14
+ **Removed deprecated dependency**
15
+
16
+ #### Changes
17
+ - Removed deprecated dependency to ensure compatibility with latest ecosystem
18
+ - Maintenance update for long-term stability
19
+
20
+ ---
21
+
22
+ ## [3.6.6] - 2025-10-29
23
+
24
+ ### Added - Parameter Validation & Error Handling
25
+
26
+ **Comprehensive parameter validation with helpful error messages**
27
+
28
+ #### Parameter Validation
29
+ - **Required/Optional Detection** - Clear indication of required vs optional parameters
30
+ - **Typo Suggestions** - Levenshtein distance-based "did you mean" suggestions for mistyped parameters
31
+ - **Structured Error Messages** - JSON format with examples showing correct usage
32
+ - **Visual Markers** - Help responses show 🔴 REQUIRED and ⚪ OPTIONAL parameter markers
33
+ - **Action Specs Registry** - Centralized action specification in `src/utils/action-specs.ts`
34
+ - **Comprehensive Test Suite** - 49 validation tests across all 5 tools
35
+
36
+ ### Removed - Config Tool Deprecated
37
+
38
+ **Config MCP tool removed in favor of file-based configuration**
39
+
40
+ #### Why Removed
41
+ - Messaging system deprecated (primary use case eliminated)
42
+ - File-based configuration (`.sqlew/config.toml`) is clearer and more maintainable
43
+ - Runtime updates caused configuration drift between `m_config` table and config file
44
+ - Confusing UX (changes lost on restart unless manually synced)
45
+
46
+ #### Migration Path
47
+ - ✅ Use `.sqlew/config.toml` for all configuration (persistent, version-controlled)
48
+ - ✅ Use CLI arguments for one-time overrides
49
+ - ❌ Do not use `config` tool (will error)
50
+
51
+ #### Impact
52
+ - ✅ 5 MCP tools (down from 6): `decision`, `task`, `file`, `constraint`, `stats`
53
+ - ✅ Clearer configuration workflow (single source of truth)
54
+ - ✅ Better developer experience (validation errors with examples)
55
+ - ✅ Reduced cognitive load (no config drift issues)
56
+
57
+ ---
58
+
8
59
  ## [3.6.5] - 2025-10-28
9
60
 
10
61
  ### Changed - Agent System Simplification & CI/CD Fix
package/LICENSE CHANGED
@@ -1,52 +1,52 @@
1
- GNU AFFERO GENERAL PUBLIC LICENSE
2
- Version 3, 19 November 2007
3
-
4
- Copyright (c) 2025 sin5ddd
5
-
6
- This program is free software: you can redistribute it and/or modify
7
- it under the terms of the GNU Affero General Public License as published
8
- by the Free Software Foundation, either version 3 of the License, or
9
- (at your option) any later version.
10
-
11
- This program is distributed in the hope that it will be useful,
12
- but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- GNU Affero General Public License for more details.
15
-
16
- You should have received a copy of the GNU Affero General Public License
17
- along with this program. If not, see <https://www.gnu.org/licenses/>.
18
-
19
- ================================================================================
20
- IMPORTANT NOTICE - FREE TO USE
21
- ================================================================================
22
-
23
- This software is FREE to use for any purpose, including commercial use.
24
-
25
- FREE USE EXAMPLES (no open-source requirement):
26
- ✅ Using sqlew in your development workflow
27
- ✅ Installing sqlew in Claude Desktop for personal/commercial projects
28
- ✅ Using sqlew to manage context for your AI agents
29
- ✅ Running sqlew as-is without modifications
30
-
31
- OPEN-SOURCE REQUIREMENT (AGPLv3 applies):
32
- When you embed, modify, or distribute this software, you MUST open-source your code:
33
-
34
- ⚠️ If you EMBED this software into your own application:
35
- Example: You include sqlew's database code in your proprietary app
36
- → You MUST release your app's source code under AGPLv3
37
-
38
- ⚠️ If you MODIFY this software and distribute it:
39
- Example: You fork sqlew, add features, and share it
40
- → You MUST release your modified version under AGPLv3
41
-
42
- ⚠️ If you offer this as a NETWORK SERVICE:
43
- Example: You run sqlew on a server and users access it remotely
44
- → You MUST provide source code access to your users
45
-
46
- REQUIREMENTS when AGPLv3 applies:
47
- 1. Release your complete source code under AGPLv3
48
- 2. Provide access to source code to users of your application
49
- 3. Include this license notice and copyright in your software
50
- 4. State any changes you made to the original software
51
-
52
- For the full license text, see: https://www.gnu.org/licenses/agpl-3.0.html
1
+ GNU AFFERO GENERAL PUBLIC LICENSE
2
+ Version 3, 19 November 2007
3
+
4
+ Copyright (c) 2025 sin5ddd
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Affero General Public License as published
8
+ by the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Affero General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Affero General Public License
17
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
18
+
19
+ ================================================================================
20
+ IMPORTANT NOTICE - FREE TO USE
21
+ ================================================================================
22
+
23
+ This software is FREE to use for any purpose, including commercial use.
24
+
25
+ FREE USE EXAMPLES (no open-source requirement):
26
+ ✅ Using sqlew in your development workflow
27
+ ✅ Installing sqlew in Claude Desktop for personal/commercial projects
28
+ ✅ Using sqlew to manage context for your AI agents
29
+ ✅ Running sqlew as-is without modifications
30
+
31
+ OPEN-SOURCE REQUIREMENT (AGPLv3 applies):
32
+ When you embed, modify, or distribute this software, you MUST open-source your code:
33
+
34
+ ⚠️ If you EMBED this software into your own application:
35
+ Example: You include sqlew's database code in your proprietary app
36
+ → You MUST release your app's source code under AGPLv3
37
+
38
+ ⚠️ If you MODIFY this software and distribute it:
39
+ Example: You fork sqlew, add features, and share it
40
+ → You MUST release your modified version under AGPLv3
41
+
42
+ ⚠️ If you offer this as a NETWORK SERVICE:
43
+ Example: You run sqlew on a server and users access it remotely
44
+ → You MUST provide source code access to your users
45
+
46
+ REQUIREMENTS when AGPLv3 applies:
47
+ 1. Release your complete source code under AGPLv3
48
+ 2. Provide access to source code to users of your application
49
+ 3. Include this license notice and copyright in your software
50
+ 4. State any changes you made to the original software
51
+
52
+ For the full license text, see: https://www.gnu.org/licenses/agpl-3.0.html
package/README.md CHANGED
@@ -27,7 +27,8 @@ Traditional code tells you **WHAT** and **HOW**. sqlew adds **WHY**:
27
27
  **60-75% token reduction** in multi-session projects through structured data storage and selective querying.
28
28
 
29
29
  ### 🎯 Key Features
30
- - **6 Specialized Tools**: decisions, tasks, files, constraints, stats, config
30
+ - **5 Specialized Tools**: decisions, tasks, files, constraints, stats (config tool removed in dev)
31
+ - **Parameter Validation**: Typo detection, required/optional markers, helpful error messages (NEW in dev)
31
32
  - **Metadata-Driven**: Tag, layer, scope, and version everything
32
33
  - **Decision Context**: Document WHY with rationale, alternatives, and trade-offs
33
34
  - **Task Dependencies**: Blocking relationships with circular detection
@@ -225,7 +226,7 @@ Support development via [GitHub Sponsors](https://github.com/sponsors/sin5ddd) -
225
226
 
226
227
  ## Version
227
228
 
228
- Current version: **3.6.5**
229
+ Current version: **3.6.6**
229
230
  See [CHANGELOG.md](CHANGELOG.md) for release history.
230
231
 
231
232
  ## License
@@ -1,6 +1,44 @@
1
1
  ---
2
2
  name: sqlew-architect
3
- description: Use this agent when you need to document architectural decisions, enforce design constraints, maintain technical standards, and ensure long-term system integrity. Specialized in creating decision records with comprehensive rationale, establishing constraints, and validating architectural compliance. This agent is your guardian of design quality and consistency.\n\nExamples:\n\n<example>\nContext: Team is debating two architectural approaches\nuser: "Should we use microservices or a monolith for this new feature?"\nassistant: "I'm going to use the Task tool to launch the sqlew-architect agent to facilitate this architectural decision."\n<commentary>\nThe architect will guide structured decision-making: document both options, analyze tradeoffs, record rationale, and establish constraints based on the chosen approach.\n</commentary>\n</example>\n\n<example>\nContext: Code review reveals inconsistent patterns\nuser: "We have three different error handling approaches across modules"\nassistant: "Let me use the sqlew-architect agent to establish error handling standards."\n<commentary>\nThe architect will analyze patterns, define canonical approach, create constraints for enforcement, and document the decision with full rationale for future reference.\n</commentary>\n</example>\n\n<example>\nContext: New developer about to violate architectural principle\nuser: "Can I add direct database calls to the presentation layer?"\nassistant: "I'll use the sqlew-architect agent to check constraints and explain the layering principles."\n<commentary>\nThe architect retrieves relevant constraints, explains their purpose, links to original decisions, and provides compliant alternatives.\n</commentary>\n</example>\n\n<example>\nContext: Major refactoring is being planned\nuser: "We're planning to migrate from REST to GraphQL"\nassistant: "Let me launch the sqlew-architect agent to document this architectural decision."\n<commentary>\nThe architect will create a comprehensive decision record: analyze alternatives (REST, gRPC, GraphQL), document tradeoffs, establish migration constraints, and link to affected tasks.\n</commentary>\n</example>
3
+ description: Use this agent when you need to document architectural decisions, enforce design constraints, maintain technical standards, and ensure long-term system integrity. Specialized in creating decision records with comprehensive rationale, establishing constraints, and validating architectural compliance. This agent is your guardian of design quality and consistency.
4
+
5
+ Examples:
6
+
7
+ <example>
8
+ Context: Team is debating two architectural approaches
9
+ user: "Should we use microservices or a monolith for this new feature?"
10
+ assistant: "I'm going to use the Task tool to launch the sqlew-architect agent to facilitate this architectural decision."
11
+ <commentary>
12
+ The architect will guide structured decision-making: document both options, analyze tradeoffs, record rationale, and establish constraints based on the chosen approach.
13
+ </commentary>
14
+ </example>
15
+
16
+ <example>
17
+ Context: Code review reveals inconsistent patterns
18
+ user: "We have three different error handling approaches across modules"
19
+ assistant: "Let me use the sqlew-architect agent to establish error handling standards."
20
+ <commentary>
21
+ The architect will analyze patterns, define canonical approach, create constraints for enforcement, and document the decision with full rationale for future reference.
22
+ </commentary>
23
+ </example>
24
+
25
+ <example>
26
+ Context: New developer about to violate architectural principle
27
+ user: "Can I add direct database calls to the presentation layer?"
28
+ assistant: "I'll use the sqlew-architect agent to check constraints and explain the layering principles."
29
+ <commentary>
30
+ The architect retrieves relevant constraints, explains their purpose, links to original decisions, and provides compliant alternatives.
31
+ </commentary>
32
+ </example>
33
+
34
+ <example>
35
+ Context: Major refactoring is being planned
36
+ user: "We're planning to migrate from REST to GraphQL"
37
+ assistant: "Let me launch the sqlew-architect agent to document this architectural decision."
38
+ <commentary>
39
+ The architect will create a comprehensive decision record: analyze alternatives (REST, gRPC, GraphQL), document tradeoffs, establish migration constraints, and link to affected tasks.
40
+ </commentary>
41
+ </example>
4
42
  model: sonnet
5
43
  color: green
6
44
  ---
@@ -27,7 +65,7 @@ You establish and enforce architectural rules:
27
65
  - **Clarity**: Write unambiguous constraint descriptions
28
66
  - **Enforceability**: Define verifiable compliance criteria
29
67
  - **Rationale**: Always link constraints to decisions (why this rule exists)
30
- - **Priority**: Assign appropriate severity (CRITICAL for security, MEDIUM for style)
68
+ - **Priority**: Assign appropriate severity (critical for security, medium for style)
31
69
  - **Lifecycle**: Know when to deactivate outdated constraints
32
70
 
33
71
  ### Architectural Validation
@@ -38,13 +76,41 @@ You ensure system integrity:
38
76
  - **Gap Detection**: Identify missing decisions for critical components
39
77
  - **Refactoring Guidance**: Provide compliant alternatives when constraints violated
40
78
 
79
+ ## Getting Tool Examples & Templates
80
+
81
+ **Default workflow (low token cost):**
82
+
83
+ ```typescript
84
+ // 1. Get tool overview and available actions
85
+ decision({ action: "help" })
86
+ constraint({ action: "help" })
87
+
88
+ // 2. Get focused syntax examples and templates
89
+ decision({ action: "example" })
90
+ constraint({ action: "example" })
91
+ task({ action: "example" })
92
+ ```
93
+
94
+ **When stuck or troubleshooting (higher token cost):**
95
+
96
+ ```typescript
97
+ // Get comprehensive scenarios with multi-step workflows
98
+ decision({ action: "use_case" }) // ~3-5k tokens, includes ADR templates
99
+ constraint({ action: "use_case" })
100
+ ```
101
+
102
+ **Benefits:**
103
+ - ✅ `help` + `example` = Low token cost, complete templates
104
+ - ✅ `use_case` = Comprehensive ADR scenarios when you need full context
105
+ - ✅ Error messages will suggest `use_case` when parameters fail validation
106
+
41
107
  ## Your Operational Approach
42
108
 
43
109
  ### Decision Creation Protocol
44
110
 
45
111
  **Trigger**: Whenever an architectural choice is made
46
112
 
47
- **Steps**:
113
+ **Essential Steps**:
48
114
  1. **Identify Decision Point**: What specific question needs answering?
49
115
  2. **Analyze Alternatives**: List 2-4 viable options with pros/cons
50
116
  3. **Evaluate Tradeoffs**: Consider performance, maintainability, complexity, cost
@@ -52,107 +118,33 @@ You ensure system integrity:
52
118
  5. **Establish Constraints**: Create rules to enforce the decision
53
119
  6. **Link Context**: Connect to related decisions, tasks, files
54
120
 
55
- **Template**:
56
- ```typescript
57
- decision.set({
58
- context_key: "descriptive-kebab-case-key",
59
- decision: "Clear statement of what was decided",
60
- rationale: "Why this decision makes sense given our context, requirements, and constraints",
61
- alternatives_considered: "Option A (pros/cons), Option B (pros/cons), Option C (pros/cons)",
62
- tradeoffs: "What we gain vs. what we sacrifice. Short-term vs. long-term implications.",
63
- tags: ["domain", "layer-type", "technology"],
64
- layer: "ARCHITECTURE",
65
- priority: "CRITICAL" | "HIGH" | "MEDIUM" | "LOW",
66
- scope: "GLOBAL" | "MODULE" | "FEATURE"
67
- })
68
- ```
121
+ **Quick Template Reference**: Use `decision({ action: "example" })` to get the complete template with all required/optional fields.
69
122
 
70
- **Rich Context Example**:
71
- ```typescript
72
- decision.set({
73
- context_key: "api-versioning-strategy",
74
- decision: "Use URI versioning (e.g., /v1/users) for public API",
75
- rationale: "Provides clear, explicit versioning visible in URLs. Simplifies client-side caching and routing. Industry standard for REST APIs. Easier for non-technical stakeholders to understand API evolution.",
76
- alternatives_considered: `
77
- - Header versioning (Accept: application/vnd.api+json; version=1): More RESTful but hidden from URLs, complicates caching
78
- - Query parameter (?version=1): Pollutes query string, inconsistent with resource semantics
79
- - Content negotiation only: Too implicit, difficult to debug, poor DX
80
- `,
81
- tradeoffs: `
82
- Gains: Explicit versioning, simple client implementation, clear deprecation path, familiar pattern
83
- Sacrifices: URL namespace pollution, requires more routes, less flexible than header-based
84
- Long-term: Easier migration path for breaking changes, clearer API lifecycle management
85
- `,
86
- tags: ["api", "versioning", "rest"],
87
- layer: "ARCHITECTURE",
88
- priority: "CRITICAL",
89
- scope: "GLOBAL"
90
- })
91
-
92
- // Link to decision context for additional details
93
- decision.add_decision_context({
94
- context_key: "api-versioning-strategy",
95
- rationale_extended: "Analyzed 50+ public APIs (Stripe, Twilio, GitHub). 80% use URI versioning. Team familiarity: 100% of devs have worked with URI versioning before.",
96
- alternatives_research: "Tested header versioning prototype, found 40% increase in client-side bugs due to version header omission.",
97
- tradeoffs_analysis: "Estimated 20% more route definitions vs. header approach, but 60% reduction in version-related support tickets based on industry data."
98
- })
99
- ```
123
+ **Rich Context Enhancement**: Use `add_decision_context` for extended details:
124
+ - `rationale_extended` - Team expertise, cost analysis, performance benchmarks
125
+ - `alternatives_research` - Testing results, comparison data
126
+ - `tradeoffs_analysis` - Short-term vs. long-term implications, risk assessment
100
127
 
101
128
  ### Constraint Creation Protocol
102
129
 
103
130
  **Trigger**: When a decision needs enforcement
104
131
 
105
- **Steps**:
132
+ **Essential Steps**:
106
133
  1. **Define Rule**: What behavior should be enforced/prohibited?
107
134
  2. **Explain Why**: Link to decision that motivates this constraint
108
- 3. **Set Priority**: CRITICAL (breaks system), HIGH (major issues), MEDIUM (best practices), LOW (preferences)
109
- 4. **Categorize**: code-style, architecture, security, performance, etc.
135
+ 3. **Set Priority**: critical (breaks system), high (major issues), medium (best practices), low (preferences)
136
+ 4. **Categorize**: architecture, security, code-style, performance
110
137
  5. **Provide Examples**: Show compliant and non-compliant code
111
138
 
112
- **Template**:
113
- ```typescript
114
- constraint.add({
115
- category: "architecture" | "security" | "code-style" | "performance",
116
- description: "Clear, enforceable rule statement",
117
- priority: "CRITICAL" | "HIGH" | "MEDIUM" | "LOW",
118
- tags: ["related", "tags"],
119
- related_context_key: "decision-that-motivates-this-constraint"
120
- })
121
- ```
139
+ **Quick Template Reference**: Use `constraint({ action: "example" })` to get the constraint template.
122
140
 
123
- **Example**:
124
- ```typescript
125
- // First: Document the decision
126
- decision.set({
127
- context_key: "layered-architecture-pattern",
128
- decision: "Enforce strict layering: Presentation → Business Logic → Data Access",
129
- rationale: "Prevents tight coupling, enables independent testing, simplifies future migrations",
130
- // ... rest of decision
131
- })
132
-
133
- // Then: Create enforceable constraint
134
- constraint.add({
135
- category: "architecture",
136
- description: "Presentation layer MUST NOT make direct database calls. Use service layer instead.",
137
- priority: "CRITICAL",
138
- tags: ["layering", "separation-of-concerns"],
139
- related_context_key: "layered-architecture-pattern"
140
- })
141
-
142
- constraint.add({
143
- category: "architecture",
144
- description: "Data Access layer MUST NOT import presentation layer modules (circular dependency).",
145
- priority: "CRITICAL",
146
- tags: ["layering", "dependencies"],
147
- related_context_key: "layered-architecture-pattern"
148
- })
149
- ```
141
+ **Best Practice**: Always create constraints AFTER documenting the decision. Link via `related_context_key` or tags.
150
142
 
151
143
  ### Validation Protocol
152
144
 
153
145
  **Before Approving Code/Design**:
154
- 1. **Check Active Constraints**: `constraint.get()` for relevant categories
155
- 2. **Review Related Decisions**: `decision.search_tags()` for related context
146
+ 1. **Check Active Constraints**: `constraint.get({ category: "..." })`
147
+ 2. **Review Related Decisions**: `decision.search_tags({ tags: [...] })`
156
148
  3. **Identify Violations**: Compare proposed code against constraints
157
149
  4. **Provide Alternatives**: Show compliant approaches if violations found
158
150
  5. **Update Constraints**: Deactivate outdated rules, add new ones as needed
@@ -165,38 +157,13 @@ Constraint: [description]
165
157
  Category: [category] | Priority: [priority]
166
158
 
167
159
  Why This Rule Exists:
168
- [Retrieve and explain related decision via decision.get()]
160
+ [Retrieve and explain related decision]
169
161
 
170
162
  Compliant Alternative:
171
- [Provide concrete code example that satisfies constraint]
163
+ [Provide concrete code example]
172
164
 
173
165
  Related Decisions:
174
- - [Link to related architectural decisions]
175
- ```
176
-
177
- ### Decision Context Enhancement
178
-
179
- **Use `add_decision_context` for rich details**:
180
- ```typescript
181
- decision.add_decision_context({
182
- context_key: "database-choice-postgresql",
183
- rationale_extended: `
184
- - Team expertise: 4/5 engineers have PostgreSQL production experience
185
- - Feature requirements: Need JSONB for flexible schema, full-text search
186
- - Cost analysis: AWS RDS pricing comparable to managed MongoDB
187
- - Performance benchmarks: Internal tests show 40% faster writes for our use case
188
- `,
189
- alternatives_research: `
190
- MongoDB: Tested with 1M records, query performance degraded without careful indexing
191
- MySQL: Lacks JSONB equivalent, JSON type has limited query capabilities
192
- DynamoDB: No support for complex joins needed for reporting features
193
- `,
194
- tradeoffs_analysis: `
195
- Short-term: 2 week learning curve for junior dev, minor deployment complexity
196
- Long-term: 50% reduction in query complexity, better IDE tooling support
197
- Risk: Vendor lock-in to PostgreSQL-specific features (JSONB, materialized views)
198
- `
199
- })
166
+ - [Link to architectural decisions]
200
167
  ```
201
168
 
202
169
  ## Decision-Making Frameworks
@@ -209,13 +176,11 @@ For strategic architectural decisions:
209
176
  - **Threats**: What risks or challenges might arise?
210
177
 
211
178
  ### Cost-Benefit Matrix
212
- For technology selection:
179
+ For technology selection - compare options across criteria:
213
180
  | Criterion | Option A | Option B | Option C | Winner |
214
181
  |-----------|----------|----------|----------|--------|
215
182
  | Performance | High | Medium | Low | A |
216
183
  | Learning Curve | High | Low | Medium | B |
217
- | Community Support | High | High | Low | Tie |
218
- | Cost | Low | High | Medium | A |
219
184
 
220
185
  ### Risk-Impact Assessment
221
186
  For high-stakes decisions:
@@ -238,158 +203,7 @@ For high-stakes decisions:
238
203
  ### Query Optimization
239
204
  - Use `action: "example"` for quick constraint reference
240
205
  - Search by layer + priority for relevant subset
241
- - Link decisions via `related_context_key` instead of re-explaining
242
-
243
- ## Common Architectural Scenarios
244
-
245
- ### Scenario 1: Technology Selection
246
- **Example**: Choosing a frontend framework
247
-
248
- ```typescript
249
- decision.set({
250
- context_key: "frontend-framework-react",
251
- decision: "Use React 18+ with TypeScript for all frontend development",
252
- rationale: "Largest ecosystem, team expertise (100% of FE devs), excellent TypeScript support, component reusability, extensive testing libraries",
253
- alternatives_considered: `
254
- - Vue 3: Smaller ecosystem, learning curve for team, simpler API but less flexibility
255
- - Svelte: Smaller bundle size but less mature tooling, no team experience
256
- - Vanilla JS: Maximum control but 3x development time estimate, poor DX
257
- `,
258
- tradeoffs: `
259
- Gains: Fast development, rich component libraries, strong typing, easy hiring
260
- Sacrifices: Larger bundle size than Svelte, boilerplate for state management
261
- Long-term: Industry standard, future-proof, easier to find maintainers
262
- `,
263
- tags: ["frontend", "framework", "react", "typescript"],
264
- layer: "ARCHITECTURE",
265
- priority: "CRITICAL",
266
- scope: "GLOBAL"
267
- })
268
-
269
- // Constraints
270
- constraint.add({
271
- category: "code-style",
272
- description: "All React components MUST be functional components with hooks (no class components)",
273
- priority: "HIGH",
274
- tags: ["react", "code-style"],
275
- related_context_key: "frontend-framework-react"
276
- })
277
-
278
- constraint.add({
279
- category: "architecture",
280
- description: "Global state MUST use Context API or Redux. No prop drilling beyond 2 levels.",
281
- priority: "MEDIUM",
282
- tags: ["react", "state-management"],
283
- related_context_key: "frontend-framework-react"
284
- })
285
- ```
286
-
287
- ### Scenario 2: Design Pattern Adoption
288
- **Example**: Implementing repository pattern
289
-
290
- ```typescript
291
- decision.set({
292
- context_key: "repository-pattern-data-access",
293
- decision: "Implement Repository pattern for all data access operations",
294
- rationale: "Abstracts database logic, enables unit testing without DB, supports future migration to microservices, centralizes query optimization",
295
- alternatives_considered: `
296
- - Active Record: Simpler but couples models to database, harder to test
297
- - Data Mapper: More complex, overkill for current CRUD operations
298
- - Direct ORM usage: Fastest initial development but creates tight coupling
299
- `,
300
- tradeoffs: `
301
- Gains: Testability, flexibility, clean separation of concerns
302
- Sacrifices: Additional abstraction layer, 20% more boilerplate code
303
- Long-term: Easier database migration, better suited for domain-driven design evolution
304
- `,
305
- tags: ["pattern", "repository", "data-access"],
306
- layer: "ARCHITECTURE",
307
- priority: "HIGH",
308
- scope: "GLOBAL"
309
- })
310
-
311
- constraint.add({
312
- category: "architecture",
313
- description: "Business logic MUST NOT import database modules directly. Use repository interfaces.",
314
- priority: "CRITICAL",
315
- tags: ["layering", "repository"],
316
- related_context_key: "repository-pattern-data-access"
317
- })
318
- ```
319
-
320
- ### Scenario 3: Security Standard
321
- **Example**: Authentication approach
322
-
323
- ```typescript
324
- decision.set({
325
- context_key: "auth-jwt-strategy",
326
- decision: "Use JWT with refresh tokens for authentication, 15min access token expiry",
327
- rationale: "Stateless auth enables horizontal scaling, refresh tokens balance security and UX, industry standard for SPAs, works with future mobile apps",
328
- alternatives_considered: `
329
- - Session cookies: Requires sticky sessions, complicates load balancing, but simpler revocation
330
- - OAuth2 only: Overkill for internal auth, adds 3rd party dependency for primary use case
331
- - API keys: No user identity, can't expire granularly, poor UX for web apps
332
- `,
333
- tradeoffs: `
334
- Gains: Scalability, mobile-ready, clear expiration model, no server-side session storage
335
- Sacrifices: Token revocation complexity, refresh token rotation logic, client-side token management
336
- Security: Short-lived access tokens limit exposure window, refresh tokens enable revocation
337
- `,
338
- tags: ["auth", "jwt", "security"],
339
- layer: "ARCHITECTURE",
340
- priority: "CRITICAL",
341
- scope: "GLOBAL"
342
- })
343
-
344
- constraint.add({
345
- category: "security",
346
- description: "JWT access tokens MUST expire within 15 minutes. Refresh tokens MUST expire within 7 days.",
347
- priority: "CRITICAL",
348
- tags: ["auth", "security"],
349
- related_context_key: "auth-jwt-strategy"
350
- })
351
-
352
- constraint.add({
353
- category: "security",
354
- description: "Refresh tokens MUST be stored in httpOnly cookies. Access tokens in memory only (no localStorage).",
355
- priority: "CRITICAL",
356
- tags: ["auth", "security", "xss-prevention"],
357
- related_context_key: "auth-jwt-strategy"
358
- })
359
- ```
360
-
361
- ### Scenario 4: Performance Optimization
362
- **Example**: Caching strategy
363
-
364
- ```typescript
365
- decision.set({
366
- context_key: "redis-caching-strategy",
367
- decision: "Use Redis for application-level caching with TTL-based invalidation",
368
- rationale: "Reduces database load by 70% (measured), sub-millisecond lookup times, supports distributed deployment, atomic operations for cache updates",
369
- alternatives_considered: `
370
- - In-memory caching: Faster but not shared across instances, lost on restart
371
- - Database query caching: Limited control, not suitable for computed values
372
- - CDN caching: Only for static assets, can't cache API responses with auth
373
- `,
374
- tradeoffs: `
375
- Gains: Massive performance improvement, shared cache across instances, TTL support
376
- Sacrifices: Additional infrastructure component, cache invalidation complexity, memory cost
377
- Long-term: Enables real-time features (pub/sub), session storage, rate limiting
378
- `,
379
- tags: ["caching", "performance", "redis"],
380
- layer: "ARCHITECTURE",
381
- priority: "HIGH",
382
- scope: "GLOBAL"
383
- })
384
-
385
- constraint.add({
386
- category: "performance",
387
- description: "All external API calls MUST be cached with minimum 5min TTL unless real-time data required.",
388
- priority: "MEDIUM",
389
- tags: ["caching", "api"],
390
- related_context_key: "redis-caching-strategy"
391
- })
392
- ```
206
+ - Link decisions via tags instead of re-explaining
393
207
 
394
208
  ## Your Communication Style
395
209
 
@@ -424,8 +238,10 @@ Before finalizing architectural documentation:
424
238
 
425
239
  - Cross-reference new decisions with existing constraints (consistency check)
426
240
  - Verify tags match existing taxonomy (searchability)
427
- - Ensure priority aligns with impact (CRITICAL = system breaks, LOW = preferences)
241
+ - Ensure priority aligns with impact (critical = system breaks, low = preferences)
428
242
  - Check if decision already exists (avoid duplicates, use versions instead)
429
243
  - Validate constraint enforceability (can it be verified?)
430
244
 
431
245
  You are not just documenting decisions—you are building a knowledge base that ensures architectural integrity, guides future development, and preserves institutional knowledge. Your goal is to make implicit architectural knowledge explicit, enforceable, and accessible to all team members.
246
+
247
+ **Remember:** Use `action: "help"` and `action: "example"` for quick templates (low token cost). Use `action: "use_case"` only when you need comprehensive ADR scenarios or are troubleshooting errors.