devforgeai 1.0.8 → 1.0.9
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/docs/CNAME +1 -0
- package/docs/NPM-Publish.md +341 -0
- package/docs/api/API.md +1054 -0
- package/docs/architecture/ARCHITECTURE.md +724 -0
- package/docs/guides/DEVELOPER-GUIDE.md +398 -0
- package/docs/guides/ROADMAP.md +48 -0
- package/docs/guides/TROUBLESHOOTING.md +631 -0
- package/docs/index.html +2045 -0
- package/package.json +2 -2
- package/src/cli/lib/components.js +5 -9
- package/devforgeai/specs/context/.gitkeep +0 -0
- package/devforgeai/specs/context/anti-patterns.md +0 -285
- package/devforgeai/specs/context/architecture-constraints.md +0 -323
- package/devforgeai/specs/context/coding-standards.md +0 -472
- package/devforgeai/specs/context/dependencies.md +0 -208
- package/devforgeai/specs/context/source-tree.md +0 -1217
- package/devforgeai/specs/context/tech-stack.md +0 -560
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devforgeai",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "DevForgeAI is a spec-driven development framework designed to enable AI-assisted software development with zero technical debt through automated validation, architectural constraints enforcement, and test-driven development workflows.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"src/claude/skills/",
|
|
39
39
|
"src/scripts/*.sh",
|
|
40
40
|
"src/scripts/*.json",
|
|
41
|
-
"
|
|
41
|
+
"docs/"
|
|
42
42
|
],
|
|
43
43
|
"repository": {
|
|
44
44
|
"type": "git",
|
|
@@ -11,7 +11,6 @@ const COMPONENTS = [
|
|
|
11
11
|
{ from: 'CLAUDE.md', to: 'CLAUDE.md', template: true },
|
|
12
12
|
{ from: 'src/claude/rules/', to: '.claude/rules/', template: false },
|
|
13
13
|
{ from: 'src/claude/memory/', to: '.claude/memory/', template: false },
|
|
14
|
-
{ from: 'devforgeai/specs/context/', to: 'devforgeai/specs/context/', template: true },
|
|
15
14
|
],
|
|
16
15
|
},
|
|
17
16
|
{
|
|
@@ -71,15 +70,12 @@ const COMPONENTS = [
|
|
|
71
70
|
required: false,
|
|
72
71
|
defaultSelected: true,
|
|
73
72
|
directories: [
|
|
74
|
-
'src/',
|
|
75
|
-
'tests/',
|
|
76
|
-
'docs/',
|
|
77
73
|
'devforgeai/',
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
'
|
|
81
|
-
'
|
|
82
|
-
'
|
|
74
|
+
],
|
|
75
|
+
sources: [
|
|
76
|
+
{ from: 'docs/api/', to: 'docs/api/', template: false },
|
|
77
|
+
{ from: 'docs/architecture/', to: 'docs/architecture/', template: false },
|
|
78
|
+
{ from: 'docs/guides/', to: 'docs/guides/', template: false },
|
|
83
79
|
],
|
|
84
80
|
},
|
|
85
81
|
];
|
|
File without changes
|
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
# Anti-Patterns - DevForgeAI Framework
|
|
2
|
-
|
|
3
|
-
**Status**: LOCKED
|
|
4
|
-
**Last Updated**: 2026-02-05
|
|
5
|
-
**Version**: 1.1
|
|
6
|
-
|
|
7
|
-
## Framework Anti-Patterns
|
|
8
|
-
|
|
9
|
-
### Category 1: Tool Usage Violations (SEVERITY: CRITICAL)
|
|
10
|
-
|
|
11
|
-
❌ **FORBIDDEN: Using Bash for File Operations**
|
|
12
|
-
|
|
13
|
-
**Wrong**:
|
|
14
|
-
```markdown
|
|
15
|
-
Bash(command="cat story.md")
|
|
16
|
-
Bash(command="echo 'content' > file.md")
|
|
17
|
-
Bash(command="find . -name '*.md'")
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
**Correct**:
|
|
21
|
-
```markdown
|
|
22
|
-
Read(file_path="story.md")
|
|
23
|
-
Write(file_path="file.md", content="content")
|
|
24
|
-
Glob(pattern="**/*.md")
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
**Rationale**: 40-73% token efficiency gain with native tools.
|
|
28
|
-
|
|
29
|
-
### Category 2: Monolithic Components (SEVERITY: HIGH)
|
|
30
|
-
|
|
31
|
-
❌ **FORBIDDEN: All-in-One Skill**
|
|
32
|
-
|
|
33
|
-
**Wrong**:
|
|
34
|
-
```
|
|
35
|
-
.claude/skills/devforgeai-everything/
|
|
36
|
-
└── SKILL.md (5,000 lines doing ideation + architecture + dev + qa + release)
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
**Correct**:
|
|
40
|
-
```
|
|
41
|
-
.claude/skills/
|
|
42
|
-
├── discovering-requirements/
|
|
43
|
-
├── designing-architecture/
|
|
44
|
-
├── implementing-stories/
|
|
45
|
-
├── validating-quality/
|
|
46
|
-
└── releasing-stories/
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
**Rationale**: Modularity enables independent updates and token efficiency.
|
|
50
|
-
|
|
51
|
-
### Category 3: Making Assumptions (SEVERITY: CRITICAL)
|
|
52
|
-
|
|
53
|
-
❌ **FORBIDDEN: Assuming Technology Choices**
|
|
54
|
-
|
|
55
|
-
**Wrong**:
|
|
56
|
-
```markdown
|
|
57
|
-
# AI sees "need caching" and adds Redis without asking
|
|
58
|
-
Install Redis for caching layer
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
**Correct**:
|
|
62
|
-
```markdown
|
|
63
|
-
Question: "Spec requires caching. Which technology?"
|
|
64
|
-
Header: "Caching"
|
|
65
|
-
Options:
|
|
66
|
-
- "Redis (in-memory, distributed)"
|
|
67
|
-
- "Memcached (simple, fast)"
|
|
68
|
-
- "In-memory (no external service)"
|
|
69
|
-
multiSelect: false
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
**Rationale**: Assumptions cause technical debt.
|
|
73
|
-
|
|
74
|
-
### Category 4: Size Violations (SEVERITY: HIGH)
|
|
75
|
-
|
|
76
|
-
❌ **FORBIDDEN: Exceeding Component Size Limits**
|
|
77
|
-
|
|
78
|
-
**Wrong**:
|
|
79
|
-
```markdown
|
|
80
|
-
# SKILL.md with 2,000 lines of inline documentation
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
**Correct**:
|
|
84
|
-
```markdown
|
|
85
|
-
# SKILL.md with 500 lines + references/ for deep docs
|
|
86
|
-
For detailed scoring rubric, see references/complexity-assessment-matrix.md
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
**Rationale**: Character budget constraints (15K for commands).
|
|
90
|
-
|
|
91
|
-
### Category 5: Language-Specific Framework Code (SEVERITY: CRITICAL)
|
|
92
|
-
|
|
93
|
-
❌ **FORBIDDEN: Python/C#/JavaScript in Framework**
|
|
94
|
-
|
|
95
|
-
**Wrong**:
|
|
96
|
-
```
|
|
97
|
-
.claude/skills/implementing-stories/
|
|
98
|
-
├── SKILL.md
|
|
99
|
-
└── scripts/
|
|
100
|
-
└── implement.py # Python implementation
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
**Correct**:
|
|
104
|
-
```
|
|
105
|
-
.claude/skills/implementing-stories/
|
|
106
|
-
├── SKILL.md
|
|
107
|
-
└── references/
|
|
108
|
-
└── tdd-workflow-guide.md # Documentation only
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
**Rationale**: Framework must be language-agnostic.
|
|
112
|
-
|
|
113
|
-
### Category 6: Context File Violations (SEVERITY: CRITICAL)
|
|
114
|
-
|
|
115
|
-
❌ **FORBIDDEN: Proceeding Without Context Files**
|
|
116
|
-
|
|
117
|
-
**Wrong**:
|
|
118
|
-
```markdown
|
|
119
|
-
# Development skill starts implementation without reading context
|
|
120
|
-
Implement feature X using EF Core
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
**Correct**:
|
|
124
|
-
```markdown
|
|
125
|
-
## Phase 1: Context Validation
|
|
126
|
-
Read all 6 context files
|
|
127
|
-
HALT if missing: "Run /create-context first"
|
|
128
|
-
Check tech-stack.md for ORM choice
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
**Rationale**: Context files prevent architectural violations.
|
|
132
|
-
|
|
133
|
-
### Category 7: Circular Dependencies (SEVERITY: HIGH)
|
|
134
|
-
|
|
135
|
-
❌ **FORBIDDEN: Skills Calling Each Other in Loops**
|
|
136
|
-
|
|
137
|
-
**Wrong**:
|
|
138
|
-
```
|
|
139
|
-
implementing-stories calls validating-quality
|
|
140
|
-
↓
|
|
141
|
-
validating-quality calls implementing-stories
|
|
142
|
-
↓
|
|
143
|
-
Infinite loop
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
**Correct**:
|
|
147
|
-
```
|
|
148
|
-
implementing-stories calls validating-quality (one-way)
|
|
149
|
-
validating-quality returns results
|
|
150
|
-
implementing-stories continues
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
**Rationale**: Prevents infinite loops and context overflow.
|
|
154
|
-
|
|
155
|
-
### Category 8: Narrative Documentation (SEVERITY: MEDIUM)
|
|
156
|
-
|
|
157
|
-
❌ **FORBIDDEN: Prose Instead of Instructions**
|
|
158
|
-
|
|
159
|
-
**Wrong**:
|
|
160
|
-
```markdown
|
|
161
|
-
The system should first analyze the codebase, and then it might want to consider generating tests...
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
**Correct**:
|
|
165
|
-
```markdown
|
|
166
|
-
1. Analyze codebase:
|
|
167
|
-
- Grep(pattern="class.*Test", glob="**/*.cs")
|
|
168
|
-
2. Generate tests:
|
|
169
|
-
- Use test-automator subagent
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
**Rationale**: Direct instructions are clearer for Claude.
|
|
173
|
-
|
|
174
|
-
### Category 9: Missing Frontmatter (SEVERITY: HIGH)
|
|
175
|
-
|
|
176
|
-
❌ **FORBIDDEN: Skills/Subagents/Commands Without Frontmatter**
|
|
177
|
-
|
|
178
|
-
**Wrong**:
|
|
179
|
-
```markdown
|
|
180
|
-
# My Skill
|
|
181
|
-
Instructions go here...
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
**Correct**:
|
|
185
|
-
```markdown
|
|
186
|
-
---
|
|
187
|
-
name: my-skill
|
|
188
|
-
description: Brief description of when to use
|
|
189
|
-
tools: Read, Write
|
|
190
|
-
---
|
|
191
|
-
|
|
192
|
-
# My Skill
|
|
193
|
-
Instructions go here...
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
**Rationale**: Frontmatter required for discovery.
|
|
197
|
-
|
|
198
|
-
### Category 10: Hardcoded Paths (SEVERITY: MEDIUM)
|
|
199
|
-
|
|
200
|
-
❌ **FORBIDDEN: Hardcoded File Paths**
|
|
201
|
-
|
|
202
|
-
**Wrong**:
|
|
203
|
-
```markdown
|
|
204
|
-
Read(file_path="/home/user/project/story.md")
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
**Correct**:
|
|
208
|
-
```markdown
|
|
209
|
-
Read(file_path="devforgeai/specs/Stories/$STORY_ID.md")
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
**Rationale**: Relative paths work across environments.
|
|
213
|
-
|
|
214
|
-
### Category 11: Code Search Tool Selection (SEVERITY: MEDIUM)
|
|
215
|
-
|
|
216
|
-
**Treelint-Supported Languages:** Python (`.py`), TypeScript (`.ts`, `.tsx`), JavaScript (`.js`, `.jsx`), Rust (`.rs`), Markdown (`.md`)
|
|
217
|
-
|
|
218
|
-
**Grep is Correct for:** Unsupported languages, simple text-pattern searches (TODOs, string literals), fallback when Treelint is unavailable.
|
|
219
|
-
|
|
220
|
-
❌ **FORBIDDEN: Using Treelint for Unsupported File Types**
|
|
221
|
-
|
|
222
|
-
**Wrong**:
|
|
223
|
-
```markdown
|
|
224
|
-
# Treelint does not support C#, Java, Go, SQL - returns errors
|
|
225
|
-
Bash(command="treelint search --type function myfile.cs")
|
|
226
|
-
Bash(command="treelint search --type class MyClass.java")
|
|
227
|
-
Bash(command="treelint deps --calls project.go")
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
**Correct**:
|
|
231
|
-
```markdown
|
|
232
|
-
# Use Grep for unsupported languages
|
|
233
|
-
Grep(pattern="class\\s+\\w+", glob="**/*.cs")
|
|
234
|
-
Grep(pattern="public\\s+void", glob="**/*.java")
|
|
235
|
-
Grep(pattern="func\\s+\\w+", glob="**/*.go")
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
**Rationale**: Treelint returns errors for unsupported file types, wasting tokens on error responses instead of useful results.
|
|
239
|
-
|
|
240
|
-
❌ **FORBIDDEN: Using Grep When Treelint Available for Supported Languages**
|
|
241
|
-
|
|
242
|
-
**Wrong**:
|
|
243
|
-
```markdown
|
|
244
|
-
# Using Grep for semantic code search in Treelint-supported languages
|
|
245
|
-
Grep(pattern="def\\s+validate", glob="**/*.py")
|
|
246
|
-
Grep(pattern="function\\s+handle", glob="**/*.ts")
|
|
247
|
-
Grep(pattern="class\\s+Service", glob="**/*.js")
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
**Correct**:
|
|
251
|
-
```markdown
|
|
252
|
-
# Use Treelint for semantic AST-aware search
|
|
253
|
-
Bash(command="treelint search --type function --name 'validate*' --format json")
|
|
254
|
-
Bash(command="treelint search --type class --name 'Service*' --format json")
|
|
255
|
-
Bash(command="treelint deps --calls --format json")
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
**Rationale**: Treelint provides 99.93% token reduction vs Grep for semantic code search (Source: ADR-013, RESEARCH-007). AST-aware search eliminates false positives from comments, strings, and partial matches. Grep remains valid for simple text patterns (TODOs, string literals) even in supported languages, and as fallback when Treelint is unavailable.
|
|
259
|
-
|
|
260
|
-
## Anti-Pattern Detection Protocol
|
|
261
|
-
|
|
262
|
-
When framework components detect anti-patterns:
|
|
263
|
-
|
|
264
|
-
1. **HALT immediately**
|
|
265
|
-
2. **Report specific violation** with file:line reference
|
|
266
|
-
3. **Provide correction example**
|
|
267
|
-
4. **Request user confirmation** before proceeding
|
|
268
|
-
|
|
269
|
-
## Enforcement Checklist
|
|
270
|
-
|
|
271
|
-
Before committing framework changes:
|
|
272
|
-
- [ ] No Bash for file operations (use Read/Write/Edit/Glob/Grep)
|
|
273
|
-
- [ ] Components within size limits (skills <1000, commands <500)
|
|
274
|
-
- [ ] No language-specific code in framework
|
|
275
|
-
- [ ] All ambiguities use AskUserQuestion
|
|
276
|
-
- [ ] Context files read before development
|
|
277
|
-
- [ ] No circular dependencies
|
|
278
|
-
- [ ] Direct instructions, not narrative prose
|
|
279
|
-
- [ ] All components have frontmatter
|
|
280
|
-
- [ ] No hardcoded absolute paths
|
|
281
|
-
- [ ] Code search tool selection correct (Treelint for supported languages, Grep for unsupported)
|
|
282
|
-
|
|
283
|
-
---
|
|
284
|
-
|
|
285
|
-
**REMEMBER**: Projects using DevForgeAI will have their own anti-patterns.md with project-specific forbidden patterns (SQL injection, N+1 queries, God objects, etc.).
|
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
# Architecture Constraints - DevForgeAI Framework
|
|
2
|
-
|
|
3
|
-
**Status**: LOCKED
|
|
4
|
-
**Last Updated**: 2025-10-30
|
|
5
|
-
**Version**: 1.0
|
|
6
|
-
|
|
7
|
-
## Framework Architecture Patterns
|
|
8
|
-
|
|
9
|
-
### Three-Layer Architecture (LOCKED)
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
Layer 1: Skills (Framework Implementation)
|
|
13
|
-
↓ invokes
|
|
14
|
-
Layer 2: Subagents (Parallel Execution)
|
|
15
|
-
↓ uses
|
|
16
|
-
Layer 3: Slash Commands (User Workflows)
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
**Dependency Rules**:
|
|
20
|
-
- ✅ Commands can invoke Skills
|
|
21
|
-
- ✅ Commands can invoke Subagents via Task tool
|
|
22
|
-
- ✅ Skills can invoke other Skills
|
|
23
|
-
- ✅ Skills can invoke Subagents via Task tool
|
|
24
|
-
- ❌ Skills CANNOT invoke Commands
|
|
25
|
-
- ❌ Subagents CANNOT invoke Skills or Commands
|
|
26
|
-
- ❌ Circular dependencies forbidden (Skill A → Skill B → Skill A)
|
|
27
|
-
|
|
28
|
-
### Skill Design Constraints (LOCKED)
|
|
29
|
-
|
|
30
|
-
**Single Responsibility Principle**:
|
|
31
|
-
- Each skill handles ONE phase of development lifecycle
|
|
32
|
-
- ✅ implementing-stories: TDD implementation only (ADR-017 naming)
|
|
33
|
-
- ✅ validating-quality: Quality validation only (ADR-017 naming)
|
|
34
|
-
- ✅ designing-systems: Architecture and context file creation only (ADR-017 naming)
|
|
35
|
-
- ✅ discovering-requirements: Requirements discovery and elicitation only (ADR-017 naming)
|
|
36
|
-
- ❌ implementing-and-validating: Multiple responsibilities
|
|
37
|
-
|
|
38
|
-
**Context Isolation**:
|
|
39
|
-
- Each skill invocation has separate context window
|
|
40
|
-
- Skills MUST NOT assume state from previous invocations
|
|
41
|
-
- Skills MUST read context files explicitly
|
|
42
|
-
|
|
43
|
-
**Progressive Disclosure**:
|
|
44
|
-
- Main SKILL.md: Core instructions (<1000 lines)
|
|
45
|
-
- references/: Deep documentation (loaded on demand)
|
|
46
|
-
- MUST use "see references/[file].md" pattern
|
|
47
|
-
|
|
48
|
-
### Subagent Design Constraints (LOCKED)
|
|
49
|
-
|
|
50
|
-
**Domain Specialization**:
|
|
51
|
-
- Each subagent specialized in single domain
|
|
52
|
-
- ✅ test-automator: Test generation only
|
|
53
|
-
- ✅ backend-architect: Backend implementation only
|
|
54
|
-
- ❌ full-stack-developer: Too broad
|
|
55
|
-
|
|
56
|
-
**Tool Restrictions**:
|
|
57
|
-
- Principle of least privilege
|
|
58
|
-
- Only grant tools needed for subagent's domain
|
|
59
|
-
- Example: test-automator gets Read, Write, Edit, Bash (for running tests)
|
|
60
|
-
- Example: code-reviewer gets Read, Grep, Glob only (read-only)
|
|
61
|
-
|
|
62
|
-
**Parallel Execution Support**:
|
|
63
|
-
- Subagents MUST be designed for parallel invocation
|
|
64
|
-
- No shared state between subagents
|
|
65
|
-
- No dependencies between parallel subagents
|
|
66
|
-
|
|
67
|
-
### Command Design Constraints (LOCKED)
|
|
68
|
-
|
|
69
|
-
**User-Facing Workflows**:
|
|
70
|
-
- Commands orchestrate skills and subagents
|
|
71
|
-
- Commands provide user-friendly parameters
|
|
72
|
-
- Commands handle user ambiguity via AskUserQuestion
|
|
73
|
-
|
|
74
|
-
**Size Constraints**:
|
|
75
|
-
- Keep under 500 lines (<20K characters)
|
|
76
|
-
- If exceeding 500 lines → extract to skill
|
|
77
|
-
|
|
78
|
-
**Parameter Handling**:
|
|
79
|
-
- Use $ARGUMENTS for user input
|
|
80
|
-
- Provide argument-hint in frontmatter
|
|
81
|
-
- Validate parameters before processing
|
|
82
|
-
|
|
83
|
-
### Context File Enforcement (LOCKED)
|
|
84
|
-
|
|
85
|
-
**Immutability Principle**:
|
|
86
|
-
- Context files are THE LAW
|
|
87
|
-
- Development skill MUST read ALL 6 context files
|
|
88
|
-
- AI agents MUST follow constraints or HALT
|
|
89
|
-
|
|
90
|
-
**Validation Pattern**:
|
|
91
|
-
```markdown
|
|
92
|
-
## Phase 1: Context Validation
|
|
93
|
-
Read context files in PARALLEL:
|
|
94
|
-
- Read(file_path="devforgeai/context/tech-stack.md")
|
|
95
|
-
- Read(file_path="devforgeai/context/source-tree.md")
|
|
96
|
-
- Read(file_path="devforgeai/context/dependencies.md")
|
|
97
|
-
- Read(file_path="devforgeai/context/coding-standards.md")
|
|
98
|
-
- Read(file_path="devforgeai/context/architecture-constraints.md")
|
|
99
|
-
- Read(file_path="devforgeai/context/anti-patterns.md")
|
|
100
|
-
|
|
101
|
-
HALT if ANY file missing: "Context incomplete. Run /create-context"
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### Quality Gate Pattern (LOCKED)
|
|
105
|
-
|
|
106
|
-
**Gate Enforcement**:
|
|
107
|
-
- Quality gates MUST block progression on violations
|
|
108
|
-
- Gates validated in sequence (no skipping)
|
|
109
|
-
- HALT pattern for gate failures
|
|
110
|
-
|
|
111
|
-
**Example**:
|
|
112
|
-
```markdown
|
|
113
|
-
HALT if tests fail: "Tests must pass before proceeding"
|
|
114
|
-
HALT if coverage < threshold: "Coverage below 95%/85%/80%"
|
|
115
|
-
HALT if CRITICAL violations: "Fix critical issues before release"
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### Error Handling Pattern (LOCKED)
|
|
119
|
-
|
|
120
|
-
**AskUserQuestion for Ambiguity**:
|
|
121
|
-
```markdown
|
|
122
|
-
IF ambiguity detected:
|
|
123
|
-
Use AskUserQuestion with specific options
|
|
124
|
-
Document decision in context file or ADR
|
|
125
|
-
Proceed with chosen option
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
**HALT for Constraint Violations**:
|
|
129
|
-
```markdown
|
|
130
|
-
IF constraint violated:
|
|
131
|
-
HALT with clear error message
|
|
132
|
-
Provide resolution steps
|
|
133
|
-
Request user confirmation before retry
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### Token Efficiency Pattern (LOCKED)
|
|
137
|
-
|
|
138
|
-
**Parallel Tool Invocation**:
|
|
139
|
-
```markdown
|
|
140
|
-
✅ CORRECT: Parallel reads
|
|
141
|
-
Read(file_path="file1.md")
|
|
142
|
-
Read(file_path="file2.md")
|
|
143
|
-
Read(file_path="file3.md")
|
|
144
|
-
|
|
145
|
-
❌ WRONG: Sequential narrative
|
|
146
|
-
First read file1, then read file2, then read file3...
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
**Native Tools Over Bash**:
|
|
150
|
-
- 40-73% token savings documented
|
|
151
|
-
- MUST use Read/Write/Edit/Glob/Grep instead of Bash equivalents
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
|
-
### Parallel Execution Rules (LOCKED)
|
|
156
|
-
|
|
157
|
-
**Three Parallel Patterns Available:**
|
|
158
|
-
|
|
159
|
-
| Pattern | Use Case | Max Concurrent | Time Savings |
|
|
160
|
-
|---------|----------|----------------|--------------|
|
|
161
|
-
| Parallel Subagents | Multiple Task() calls | 4-6 (10 max) | 30-40% |
|
|
162
|
-
| Background Tasks | Long-running Bash | 3-4 | 50-80% |
|
|
163
|
-
| Parallel Tools | Multiple Read/Grep | Automatic | 15-25% |
|
|
164
|
-
|
|
165
|
-
**Task Count Limits (LOCKED):**
|
|
166
|
-
- **Recommended**: 4-6 parallel subagents per batch
|
|
167
|
-
- **Maximum**: 10 concurrent tasks (framework limit)
|
|
168
|
-
- **Beyond 10**: Implement explicit batching with synchronization points
|
|
169
|
-
|
|
170
|
-
**Dependency Rules (LOCKED):**
|
|
171
|
-
- ✅ Parallel tasks MUST be independent (no cross-task dependencies)
|
|
172
|
-
- ✅ If task B uses output of task A: execute sequentially
|
|
173
|
-
- ✅ Synchronization points required between dependent batches
|
|
174
|
-
- ❌ Never parallelize dependent operations
|
|
175
|
-
|
|
176
|
-
**Background Task Rules:**
|
|
177
|
-
- Timeout required for all background tasks (60-600 seconds)
|
|
178
|
-
- Results MUST be retrieved before next phase
|
|
179
|
-
- Cleanup on error or deferral
|
|
180
|
-
|
|
181
|
-
**Failure Recovery (LOCKED):**
|
|
182
|
-
- Primary: Attempt parallel execution
|
|
183
|
-
- Fallback: Silently retry as sequential if parallel fails
|
|
184
|
-
- Threshold: Continue if >= 50% success rate (configurable)
|
|
185
|
-
|
|
186
|
-
**Reference:** See `docs/guides/parallel-orchestration-guide.md` for full patterns
|
|
187
|
-
|
|
188
|
-
---
|
|
189
|
-
|
|
190
|
-
## Installer Architecture Patterns (EPIC-012, EPIC-013, EPIC-014)
|
|
191
|
-
|
|
192
|
-
### Installation State Machine (LOCKED)
|
|
193
|
-
|
|
194
|
-
**States**:
|
|
195
|
-
```
|
|
196
|
-
┌─────────────┐
|
|
197
|
-
│ Fresh │ ← No previous installation detected
|
|
198
|
-
└──────┬──────┘
|
|
199
|
-
│ detect existing
|
|
200
|
-
▼
|
|
201
|
-
┌─────────────┐
|
|
202
|
-
│ Upgrade │ ← Previous version detected, upgrade path valid
|
|
203
|
-
└──────┬──────┘
|
|
204
|
-
│ upgrade fails
|
|
205
|
-
▼
|
|
206
|
-
┌─────────────┐
|
|
207
|
-
│ Rollback │ ← Restore previous version from backup
|
|
208
|
-
└──────┬──────┘
|
|
209
|
-
│ success
|
|
210
|
-
▼
|
|
211
|
-
┌─────────────┐
|
|
212
|
-
│ Validated │ ← Installation verified complete
|
|
213
|
-
└─────────────┘
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
**State Transitions**:
|
|
217
|
-
- ✅ Fresh → Validated (successful fresh install)
|
|
218
|
-
- ✅ Upgrade → Validated (successful upgrade)
|
|
219
|
-
- ✅ Upgrade → Rollback → Validated (failed upgrade, rollback succeeded)
|
|
220
|
-
- ✅ Fix → Validated (repair completed)
|
|
221
|
-
- ❌ Validated → Fresh (no overwriting valid installation without user consent)
|
|
222
|
-
- ❌ Rollback → Rollback (no recursive rollback)
|
|
223
|
-
|
|
224
|
-
### Validation Pipeline Pattern (LOCKED)
|
|
225
|
-
|
|
226
|
-
**Chain of Responsibility** for pre-flight checks:
|
|
227
|
-
|
|
228
|
-
```
|
|
229
|
-
PreFlightValidation
|
|
230
|
-
├── PythonVersionCheck → WARN if Python < 3.10
|
|
231
|
-
├── DiskSpaceCheck → ERROR if < 100MB available
|
|
232
|
-
├── PermissionCheck → ERROR if target not writable
|
|
233
|
-
├── ExistingInstallCheck → INFO prompts for upgrade/fresh choice
|
|
234
|
-
├── GitStatusCheck → WARN if uncommitted changes (optional)
|
|
235
|
-
└── ConflictCheck → WARN lists files that would be overwritten
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
**Rules**:
|
|
239
|
-
- ✅ Checks run in sequence (each check passes before next)
|
|
240
|
-
- ✅ ERROR checks block installation (must fix before proceeding)
|
|
241
|
-
- ✅ WARN checks allow continuation with --force flag
|
|
242
|
-
- ✅ INFO checks are informational only (don't block)
|
|
243
|
-
- ❌ No skipping ERROR checks (even with --force)
|
|
244
|
-
- ❌ No partial validation (all checks must run)
|
|
245
|
-
|
|
246
|
-
### Atomic Installation Pattern (LOCKED)
|
|
247
|
-
|
|
248
|
-
**All-or-Nothing Principle**:
|
|
249
|
-
|
|
250
|
-
```
|
|
251
|
-
1. Create backup of existing files (if any)
|
|
252
|
-
2. Create transaction log
|
|
253
|
-
3. Execute installation steps
|
|
254
|
-
- If any step fails → Rollback to backup
|
|
255
|
-
- If all steps succeed → Commit (delete backup marker)
|
|
256
|
-
4. Validate installation
|
|
257
|
-
- If validation fails → Rollback
|
|
258
|
-
5. Update version metadata
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
**Rules**:
|
|
262
|
-
- ✅ Backup MUST be created before ANY modifications
|
|
263
|
-
- ✅ Transaction log tracks all file operations
|
|
264
|
-
- ✅ Rollback restores EXACTLY to pre-installation state
|
|
265
|
-
- ✅ No partial installations allowed
|
|
266
|
-
- ❌ No modifications without backup
|
|
267
|
-
- ❌ No deleting backup until validation passes
|
|
268
|
-
|
|
269
|
-
### CLAUDE.md Merge Strategy (LOCKED)
|
|
270
|
-
|
|
271
|
-
**4 Merge Strategies**:
|
|
272
|
-
|
|
273
|
-
```
|
|
274
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
275
|
-
│ AUTO-MERGE (default) │
|
|
276
|
-
│ - Parse user sections vs DevForgeAI sections │
|
|
277
|
-
│ - Preserve user content, update DevForgeAI content │
|
|
278
|
-
│ - Merge result = User + Updated Framework │
|
|
279
|
-
├─────────────────────────────────────────────────────────────┤
|
|
280
|
-
│ REPLACE │
|
|
281
|
-
│ - Backup existing CLAUDE.md │
|
|
282
|
-
│ - Overwrite with DevForgeAI template │
|
|
283
|
-
│ - User must manually re-add custom content │
|
|
284
|
-
├─────────────────────────────────────────────────────────────┤
|
|
285
|
-
│ SKIP │
|
|
286
|
-
│ - Don't modify CLAUDE.md │
|
|
287
|
-
│ - User manually integrates DevForgeAI instructions │
|
|
288
|
-
├─────────────────────────────────────────────────────────────┤
|
|
289
|
-
│ MANUAL │
|
|
290
|
-
│ - Create CLAUDE.mddevforgeai (new content) │
|
|
291
|
-
│ - User merges manually with existing CLAUDE.md │
|
|
292
|
-
└─────────────────────────────────────────────────────────────┘
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
**Rules**:
|
|
296
|
-
- ✅ Always backup before merge (regardless of strategy)
|
|
297
|
-
- ✅ Auto-merge uses section markers to identify boundaries
|
|
298
|
-
- ✅ Conflict detection prompts user for resolution
|
|
299
|
-
- ✅ Merge result validated for syntax errors
|
|
300
|
-
- ❌ No silent overwrites (always inform user)
|
|
301
|
-
- ❌ No merge without user consent on conflict
|
|
302
|
-
|
|
303
|
-
### Version Compatibility Matrix (LOCKED)
|
|
304
|
-
|
|
305
|
-
**Upgrade Paths**:
|
|
306
|
-
|
|
307
|
-
| From Version | To Version | Allowed? | Migration Required? |
|
|
308
|
-
|--------------|------------|----------|---------------------|
|
|
309
|
-
| v1.x.x | v1.y.z (y>x) | ✅ Yes | Minor migration |
|
|
310
|
-
| v1.x.x | v2.0.0 | ⚠️ With warning | Major migration |
|
|
311
|
-
| v2.x.x | v1.x.x | ❌ No (downgrade) | N/A |
|
|
312
|
-
| None | Any | ✅ Yes (fresh) | None |
|
|
313
|
-
|
|
314
|
-
**Rules**:
|
|
315
|
-
- ✅ Minor version upgrades always allowed (1.0 → 1.1)
|
|
316
|
-
- ✅ Patch version upgrades always allowed (1.0.0 → 1.0.1)
|
|
317
|
-
- ⚠️ Major version upgrades require user confirmation (1.x → 2.x)
|
|
318
|
-
- ❌ Downgrades blocked by default (require --force)
|
|
319
|
-
- ❌ Skip-version upgrades require sequential migrations (1.0 → 1.1 → 1.2, not 1.0 → 1.2)
|
|
320
|
-
|
|
321
|
-
---
|
|
322
|
-
|
|
323
|
-
**REMEMBER**: Projects using DevForgeAI will have their own architecture-constraints.md defining layer boundaries, patterns, and design rules specific to their architecture (Clean Architecture, N-Tier, etc.).
|