devforgeai 1.0.7 → 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/commands/install.js +7 -2
- package/src/cli/lib/components.js +5 -9
- package/src/cli/lib/ide/claude-code.js +24 -9
- package/src/cli/lib/settings-merger.js +160 -0
- 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
|
@@ -0,0 +1,631 @@
|
|
|
1
|
+
# DevForgeAI Troubleshooting Guide
|
|
2
|
+
|
|
3
|
+
**Last Updated:** 2026-03-03
|
|
4
|
+
**Applies To:** DevForgeAI Framework v4.x
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Table of Contents
|
|
9
|
+
|
|
10
|
+
- [Quick Fixes](#quick-fixes)
|
|
11
|
+
- [Development Issues](#development-issues)
|
|
12
|
+
- [QA Issues](#qa-issues)
|
|
13
|
+
- [Git Issues](#git-issues)
|
|
14
|
+
- [WSL Issues](#wsl-issues)
|
|
15
|
+
- [Hook Issues](#hook-issues)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Quick Fixes
|
|
20
|
+
|
|
21
|
+
| Symptom | Cause | Fix |
|
|
22
|
+
|---------|-------|-----|
|
|
23
|
+
| `COMMIT BLOCKED` | DoD items under `###` subsection | Move items directly under `## Implementation Notes` |
|
|
24
|
+
| `ModuleNotFoundError` | PYTHONPATH not set | `export PYTHONPATH=".:$PYTHONPATH"` |
|
|
25
|
+
| `Permission denied: script.sh` | WSL file permissions | `chmod +x script.sh` or `bash script.sh` |
|
|
26
|
+
| `$'\r': command not found` | CRLF line endings | `dos2unix script.sh` |
|
|
27
|
+
| `Context files missing` | Setup not run | Run `/create-context` before `/dev` or `/qa` |
|
|
28
|
+
| `Phase skipping error` | Attempted to skip a phase | Execute all phases in order; no exceptions |
|
|
29
|
+
| `Technology not in tech-stack.md` | HALT trigger fired | Create an ADR before introducing the technology |
|
|
30
|
+
| `Coverage below threshold` | Tests insufficient | Coverage gaps are CRITICAL blockers (ADR-010) |
|
|
31
|
+
| `3+ fix attempts failed` | Shotgun debugging | Invoke root-cause-diagnosis skill before attempt 4 |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Development Issues
|
|
36
|
+
|
|
37
|
+
### 1. Context Files Missing
|
|
38
|
+
|
|
39
|
+
**Symptoms:**
|
|
40
|
+
- Skill invocation fails with references to missing context files
|
|
41
|
+
- `/dev` or `/qa` commands fail at Phase 01 pre-flight
|
|
42
|
+
|
|
43
|
+
**Cause:** The six immutable context files in `devforgeai/specs/context/` have not been generated for the project.
|
|
44
|
+
|
|
45
|
+
**Required files:**
|
|
46
|
+
1. `tech-stack.md`
|
|
47
|
+
2. `source-tree.md`
|
|
48
|
+
3. `dependencies.md`
|
|
49
|
+
4. `coding-standards.md`
|
|
50
|
+
5. `architecture-constraints.md`
|
|
51
|
+
6. `anti-patterns.md`
|
|
52
|
+
|
|
53
|
+
**Solution:**
|
|
54
|
+
Run the `/create-context` command before starting any development or QA workflow. This generates all six context files from the project's architecture specification.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
### 2. Phase Skipping Errors
|
|
59
|
+
|
|
60
|
+
**Symptoms:**
|
|
61
|
+
- Phase validation fails because a previous phase was not completed
|
|
62
|
+
- Pre-flight checks at the start of a phase report missing artifacts from prior phases
|
|
63
|
+
|
|
64
|
+
**Cause:** All phases in the implementing-stories workflow are mandatory. The framework enforces sequential execution of every phase.
|
|
65
|
+
|
|
66
|
+
**Solution:**
|
|
67
|
+
Execute every phase in documented order. The following rationalizations are explicitly forbidden:
|
|
68
|
+
- "This phase is simple enough to skip"
|
|
69
|
+
- "I already know the answer, no need to verify"
|
|
70
|
+
- "Skipping this saves tokens/time"
|
|
71
|
+
|
|
72
|
+
Only the user can authorize phase skipping via explicit instruction.
|
|
73
|
+
|
|
74
|
+
(Source: `.claude/rules/workflow/tdd-workflow.md` and CLAUDE.md `no_token_optimization_of_phases` section)
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### 3. Technology Not in tech-stack.md
|
|
79
|
+
|
|
80
|
+
**Symptoms:**
|
|
81
|
+
- HALT trigger fires when a technology, library, or tool is referenced that does not appear in `devforgeai/specs/context/tech-stack.md`
|
|
82
|
+
|
|
83
|
+
**Cause:** Context files are immutable. Any technology not listed in `tech-stack.md` cannot be used without an Architecture Decision Record.
|
|
84
|
+
|
|
85
|
+
**Solution:**
|
|
86
|
+
1. HALT immediately
|
|
87
|
+
2. Use AskUserQuestion to get user approval for the new technology
|
|
88
|
+
3. Create an ADR in `devforgeai/specs/adrs/` documenting the decision
|
|
89
|
+
4. Update `tech-stack.md` through the `/create-context` workflow (not direct edit)
|
|
90
|
+
5. Resume development
|
|
91
|
+
|
|
92
|
+
(Source: `.claude/rules/core/critical-rules.md`, Rule 1 and Rule 7)
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### 4. Module Not Found (Python CLI)
|
|
97
|
+
|
|
98
|
+
**Symptoms:**
|
|
99
|
+
```
|
|
100
|
+
ModuleNotFoundError: No module named 'devforgeai_cli'
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Cause:** The Python CLI package is not installed or `PYTHONPATH` does not include the project root.
|
|
104
|
+
|
|
105
|
+
**Solution:**
|
|
106
|
+
|
|
107
|
+
Option A -- Install the CLI in development mode:
|
|
108
|
+
```bash
|
|
109
|
+
pip install -e .claude/scripts/
|
|
110
|
+
devforgeai-validate --help
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Option B -- Set PYTHONPATH:
|
|
114
|
+
```bash
|
|
115
|
+
export PYTHONPATH=".:$PYTHONPATH"
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
### 5. 3+ Consecutive Fix Attempts Failing
|
|
121
|
+
|
|
122
|
+
**Symptoms:**
|
|
123
|
+
- The same test or error persists after three or more fix attempts
|
|
124
|
+
- Different code changes keep producing the same failure
|
|
125
|
+
|
|
126
|
+
**Cause:** Iterative fixes without root cause analysis (shotgun debugging).
|
|
127
|
+
|
|
128
|
+
**Solution:**
|
|
129
|
+
After the third failed attempt, you MUST invoke the root-cause-diagnosis skill before making any further changes:
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
Skill: .claude/skills/root-cause-diagnosis/SKILL.md
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
The skill enforces a 4-phase methodology:
|
|
136
|
+
1. **CAPTURE** -- Collect failure artifacts (error messages, stack traces, test output)
|
|
137
|
+
2. **INVESTIGATE** -- Cross-reference against context files using the diagnostic-analyst subagent
|
|
138
|
+
3. **HYPOTHESIZE** -- Generate ranked hypotheses with confidence scores
|
|
139
|
+
4. **PRESCRIBE** -- Recommend targeted fixes with specific file paths
|
|
140
|
+
|
|
141
|
+
If the prescribed fix also fails, try the next hypothesis. After 5 total attempts, escalate to the user via AskUserQuestion.
|
|
142
|
+
|
|
143
|
+
(Source: `.claude/rules/workflow/diagnosis-before-fix.md`)
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## QA Issues
|
|
148
|
+
|
|
149
|
+
### 6. Coverage Below Thresholds
|
|
150
|
+
|
|
151
|
+
**Symptoms:**
|
|
152
|
+
- QA validation returns FAILED
|
|
153
|
+
- Coverage report shows percentages below required minimums
|
|
154
|
+
|
|
155
|
+
**Cause:** Test coverage does not meet the mandatory thresholds defined in ADR-010.
|
|
156
|
+
|
|
157
|
+
**Thresholds (CRITICAL blockers, not warnings):**
|
|
158
|
+
|
|
159
|
+
| Layer | Minimum Coverage |
|
|
160
|
+
|-------|-----------------|
|
|
161
|
+
| Business Logic | 95% |
|
|
162
|
+
| Application | 85% |
|
|
163
|
+
| Infrastructure | 80% |
|
|
164
|
+
|
|
165
|
+
**Solution:**
|
|
166
|
+
Coverage gaps cannot be deferred. If coverage is below threshold, the QA result MUST be FAILED. You must:
|
|
167
|
+
|
|
168
|
+
1. Identify uncovered code paths using coverage reports
|
|
169
|
+
2. Write additional tests to cover the gaps
|
|
170
|
+
3. Re-run the test suite to verify thresholds are met
|
|
171
|
+
4. Only then proceed through the QA gate
|
|
172
|
+
|
|
173
|
+
There is no "PASS WITH WARNINGS" path for coverage gaps.
|
|
174
|
+
|
|
175
|
+
(Source: `.claude/rules/workflow/qa-validation.md`, Coverage Threshold Enforcement section)
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Git Issues
|
|
180
|
+
|
|
181
|
+
### 7. Commit Blocked by Pre-Commit Hook (DoD Validation)
|
|
182
|
+
|
|
183
|
+
**Symptoms:**
|
|
184
|
+
```
|
|
185
|
+
VALIDATION FAILED
|
|
186
|
+
DoD item marked [x] but missing from Implementation Notes
|
|
187
|
+
COMMIT BLOCKED
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Cause:** The `devforgeai-validate validate-dod` pre-commit hook checks that all Definition of Done items marked `[x]` also appear in the `## Implementation Notes` section. The most common failure is placing DoD items under a `###` subsection header instead of directly under `## Implementation Notes`.
|
|
191
|
+
|
|
192
|
+
The validator's `extract_section()` function stops at the first `###` header. Any items below a `###` header are invisible to the validator.
|
|
193
|
+
|
|
194
|
+
**Wrong format (validator FAILS):**
|
|
195
|
+
```markdown
|
|
196
|
+
## Implementation Notes
|
|
197
|
+
|
|
198
|
+
**Developer:** DevForgeAI AI Agent
|
|
199
|
+
|
|
200
|
+
### Definition of Done Status
|
|
201
|
+
- [x] Item 1 - Completed: description
|
|
202
|
+
- [x] Item 2 - Completed: description
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
The parser stops at `### Definition of Done Status` and never sees the items below it.
|
|
206
|
+
|
|
207
|
+
**Correct format (validator PASSES):**
|
|
208
|
+
```markdown
|
|
209
|
+
## Implementation Notes
|
|
210
|
+
|
|
211
|
+
**Developer:** DevForgeAI AI Agent
|
|
212
|
+
**Implemented:** 2026-03-03
|
|
213
|
+
|
|
214
|
+
- [x] Item 1 - Completed: description
|
|
215
|
+
- [x] Item 2 - Completed: description
|
|
216
|
+
|
|
217
|
+
### TDD Workflow Summary
|
|
218
|
+
...
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Items must be a flat list directly under `## Implementation Notes`, after developer metadata and before any `###` subsections.
|
|
222
|
+
|
|
223
|
+
**Recovery steps:**
|
|
224
|
+
1. Read the fix guide: `.claude/skills/implementing-stories/references/dod-update-workflow.md`
|
|
225
|
+
2. Read the failing story file (path shown in validator output)
|
|
226
|
+
3. Move DoD items above any `###` headers
|
|
227
|
+
4. Ensure item text matches exactly between the DoD section and Implementation Notes (including backticks and special characters)
|
|
228
|
+
5. Validate before retrying:
|
|
229
|
+
```bash
|
|
230
|
+
devforgeai-validate validate-dod <STORY_FILE>
|
|
231
|
+
```
|
|
232
|
+
6. Only commit after exit code 0
|
|
233
|
+
|
|
234
|
+
**Never use `git commit --no-verify` to bypass validation.**
|
|
235
|
+
|
|
236
|
+
(Source: `.claude/rules/workflow/commit-failure-recovery.md` and `.claude/skills/implementing-stories/references/dod-update-workflow.md`)
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
### 8. Autonomous Deferral Detected
|
|
241
|
+
|
|
242
|
+
**Symptoms:**
|
|
243
|
+
```
|
|
244
|
+
AUTONOMOUS DEFERRAL DETECTED
|
|
245
|
+
COMMIT BLOCKED
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**Cause:** A DoD item was marked `[x]` in the Definition of Done section but shows `[ ]` in Implementation Notes without user approval. The framework prohibits autonomous deferrals.
|
|
249
|
+
|
|
250
|
+
**Solution:**
|
|
251
|
+
1. Identify the mismatched item
|
|
252
|
+
2. Either complete the implementation or get explicit user approval to defer
|
|
253
|
+
3. If deferring with approval, document the justification in the story file
|
|
254
|
+
4. Re-validate with `devforgeai-validate validate-dod`
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## WSL Issues
|
|
259
|
+
|
|
260
|
+
### 9. Permission Denied on Shell Scripts
|
|
261
|
+
|
|
262
|
+
**Symptoms:**
|
|
263
|
+
```
|
|
264
|
+
bash: ./script.sh: Permission denied
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**Cause:** WSL file permission handling differs from native Linux. Scripts cloned from Git on Windows may lack execute permission.
|
|
268
|
+
|
|
269
|
+
**Solution:**
|
|
270
|
+
|
|
271
|
+
Option A -- Add execute permission:
|
|
272
|
+
```bash
|
|
273
|
+
chmod +x script.sh
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Option B -- Run with explicit bash invocation:
|
|
277
|
+
```bash
|
|
278
|
+
bash script.sh
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
### 10. Line Ending Errors (`$'\r'`)
|
|
284
|
+
|
|
285
|
+
**Symptoms:**
|
|
286
|
+
```
|
|
287
|
+
/bin/bash^M: bad interpreter: No such file or directory
|
|
288
|
+
```
|
|
289
|
+
or
|
|
290
|
+
```
|
|
291
|
+
$'\r': command not found
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
**Cause:** Shell scripts have Windows-style CRLF line endings (`\r\n`) instead of Unix-style LF (`\n`). This happens when files are created or edited on Windows and run in WSL.
|
|
295
|
+
|
|
296
|
+
**Solution:**
|
|
297
|
+
|
|
298
|
+
Convert the file:
|
|
299
|
+
```bash
|
|
300
|
+
dos2unix script.sh
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
If `dos2unix` is not installed:
|
|
304
|
+
```bash
|
|
305
|
+
sudo apt install dos2unix
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
Alternatively, use sed:
|
|
309
|
+
```bash
|
|
310
|
+
sed -i 's/\r$//' script.sh
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
**Prevention:** Configure Git to handle line endings:
|
|
314
|
+
```bash
|
|
315
|
+
git config --global core.autocrlf input
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
This converts CRLF to LF on commit while leaving the working directory as-is.
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
### 11. Tests Failing Against Operational Folders
|
|
323
|
+
|
|
324
|
+
**Symptoms:**
|
|
325
|
+
- Corrupt or missing file errors when running tests
|
|
326
|
+
- Intermittent test failures that cannot be reproduced
|
|
327
|
+
|
|
328
|
+
**Cause:** WSL has historically generated corrupt or missing file errors when tests run against operational folders (`.claude/`, `devforgeai/`).
|
|
329
|
+
|
|
330
|
+
**Solution:**
|
|
331
|
+
Always run tests against the `src/` tree, not operational folders:
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
# Correct
|
|
335
|
+
pytest src/tests/
|
|
336
|
+
|
|
337
|
+
# Wrong -- may produce WSL file errors
|
|
338
|
+
pytest .claude/scripts/tests/
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
(Source: CLAUDE.md, "test against src/ tree not operational folders")
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
### 12. Temporary Files in /tmp/ Not Found
|
|
346
|
+
|
|
347
|
+
**Symptoms:**
|
|
348
|
+
- Files written to `/tmp/` are not accessible from other tools or sessions
|
|
349
|
+
- Cross-platform path resolution failures
|
|
350
|
+
|
|
351
|
+
**Cause:** The `/tmp/` directory is not reliably shared between WSL, Windows, and Linux environments.
|
|
352
|
+
|
|
353
|
+
**Solution:**
|
|
354
|
+
Use project-scoped temporary files instead:
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
# Wrong
|
|
358
|
+
/tmp/STORY-505/output.txt
|
|
359
|
+
|
|
360
|
+
# Correct
|
|
361
|
+
{project-root}/tmp/STORY-505/output.txt
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
(Source: `.claude/rules/workflow/operational-safety.md`, Rule 2)
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## Hook Issues
|
|
369
|
+
|
|
370
|
+
### 13. SubagentStop Hook Failures
|
|
371
|
+
|
|
372
|
+
**Symptoms:**
|
|
373
|
+
- Hook validation fails silently
|
|
374
|
+
- Phase transitions blocked without clear error message
|
|
375
|
+
|
|
376
|
+
**Cause:** Hook scripts may return non-zero exit codes or write errors to stderr that are not surfaced clearly.
|
|
377
|
+
|
|
378
|
+
**Diagnostic steps:**
|
|
379
|
+
1. Check the hook script's exit code:
|
|
380
|
+
```bash
|
|
381
|
+
devforgeai-validate check-hooks
|
|
382
|
+
echo $?
|
|
383
|
+
```
|
|
384
|
+
2. Review stderr output -- hook errors are logged there, not stdout
|
|
385
|
+
3. Verify the hook script exists and is executable
|
|
386
|
+
4. Check that required environment variables are set
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
### 14. TaskCompleted Hook Validation Gate
|
|
391
|
+
|
|
392
|
+
**Symptoms:**
|
|
393
|
+
- Task completion is not recognized by the framework
|
|
394
|
+
- Phase state does not advance after task completion
|
|
395
|
+
|
|
396
|
+
**Cause:** The TaskCompleted hook performs step validation. If the validation gate fails, the phase state is not updated.
|
|
397
|
+
|
|
398
|
+
**Diagnostic steps:**
|
|
399
|
+
1. Check phase state:
|
|
400
|
+
```bash
|
|
401
|
+
python -m devforgeai_cli.commands.phase_commands phase-status STORY-XXX --project-root=.
|
|
402
|
+
```
|
|
403
|
+
2. Review the phase state JSON file:
|
|
404
|
+
```
|
|
405
|
+
devforgeai/workflows/STORY-XXX-qa-phase-state.json
|
|
406
|
+
```
|
|
407
|
+
3. Look for validation errors in the hook output
|
|
408
|
+
4. Verify all acceptance criteria for the current phase are met before the hook fires
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
### 15. Pre-Commit Hook Modification Attempts
|
|
413
|
+
|
|
414
|
+
**Symptoms:**
|
|
415
|
+
- HALT trigger fires when attempting to modify `.git/hooks/`
|
|
416
|
+
|
|
417
|
+
**Cause:** Modifying Git hooks is a forbidden operation in DevForgeAI. This is a safety measure to preserve commit validation integrity.
|
|
418
|
+
|
|
419
|
+
**Solution:**
|
|
420
|
+
Never modify `.git/hooks/` directly. If the pre-commit hook has a bug or incorrect behavior:
|
|
421
|
+
1. Report the issue
|
|
422
|
+
2. Fix the validation logic in the source (not the hook)
|
|
423
|
+
3. Rebuild the hook through the proper workflow
|
|
424
|
+
|
|
425
|
+
(Source: CLAUDE.md, HALT Triggers section)
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
<!-- SECTION: assessing-entrepreneur START -->
|
|
430
|
+
|
|
431
|
+
### 16. Profile not generated after running /assess-me
|
|
432
|
+
|
|
433
|
+
**Symptoms:**
|
|
434
|
+
- The `/assess-me` command completes all 9 phases but no `user-profile.yaml` file appears at `devforgeai/specs/business/user-profile.yaml`
|
|
435
|
+
- Phase 9 (Results Summary) displays recommendations but the profile data is not persisted
|
|
436
|
+
|
|
437
|
+
**Cause:** The `entrepreneur-assessor` subagent (Phase 8) is responsible for writing the profile file. If the subagent was not invoked, or its Task() prompt did not include the collected responses from Phases 2-7, the profile is never written.
|
|
438
|
+
|
|
439
|
+
**Solution:**
|
|
440
|
+
1. Verify the subagent file exists at `src/claude/agents/entrepreneur-assessor.md`
|
|
441
|
+
2. Confirm Phase 8 invokes the subagent with a Task() call that includes all 6 dimension responses
|
|
442
|
+
3. Check that the subagent's output targets `devforgeai/specs/business/user-profile.yaml`
|
|
443
|
+
4. If the file was generated but is empty or malformed, verify the schema contains required fields:
|
|
444
|
+
```yaml
|
|
445
|
+
schema_version: "1.0"
|
|
446
|
+
adaptive_profile:
|
|
447
|
+
task_chunk_size: micro | standard | extended
|
|
448
|
+
session_length: short | medium | long
|
|
449
|
+
check_in_frequency: frequent | moderate | minimal
|
|
450
|
+
```
|
|
451
|
+
5. Re-run `/assess-me` if the profile is missing entirely
|
|
452
|
+
|
|
453
|
+
---
|
|
454
|
+
|
|
455
|
+
### 17. Assessment reference files not found during Phase 8-9
|
|
456
|
+
|
|
457
|
+
**Symptoms:**
|
|
458
|
+
- Phase 8 (Profile Generation) or Phase 9 (Results Summary) fails with a file-not-found error
|
|
459
|
+
- Error references one of the adaptation or calibration reference files
|
|
460
|
+
|
|
461
|
+
**Cause:** The skill loads 4 reference files on demand from `src/claude/skills/assessing-entrepreneur/references/`. If any file is missing or the path has changed, the phase cannot proceed.
|
|
462
|
+
|
|
463
|
+
**Required files:**
|
|
464
|
+
```
|
|
465
|
+
src/claude/skills/assessing-entrepreneur/references/work-style-questionnaire.md
|
|
466
|
+
src/claude/skills/assessing-entrepreneur/references/plan-calibration-engine.md
|
|
467
|
+
src/claude/skills/assessing-entrepreneur/references/adhd-adaptation-framework.md
|
|
468
|
+
src/claude/skills/assessing-entrepreneur/references/confidence-assessment-workflow.md
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
**Solution:**
|
|
472
|
+
1. Verify all 4 files exist at the paths above
|
|
473
|
+
2. If a file is missing, restore it from source control:
|
|
474
|
+
```bash
|
|
475
|
+
git checkout main -- src/claude/skills/assessing-entrepreneur/references/
|
|
476
|
+
```
|
|
477
|
+
3. Confirm the skill file references use relative paths matching the actual directory layout
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
### 18. Assessment dimension skipped or missing from profile
|
|
482
|
+
|
|
483
|
+
**Symptoms:**
|
|
484
|
+
- The generated `user-profile.yaml` is missing one or more of the 6 dimensions
|
|
485
|
+
- The `entrepreneur-assessor` subagent reports incomplete input
|
|
486
|
+
|
|
487
|
+
**Cause:** One of Phases 2-7 was skipped, or the user's response to a dimension question was not captured and passed to the subagent in the Phase 8 Task() prompt.
|
|
488
|
+
|
|
489
|
+
**Solution:**
|
|
490
|
+
1. The subagent uses AskUserQuestion to request any missing dimension -- check if this prompt appeared and was answered
|
|
491
|
+
2. If the prompt did not appear, verify the Phase 8 Task() prompt includes all 6 dimension responses collected during Phases 2-7
|
|
492
|
+
3. Re-run `/assess-me` to complete the missing dimension. The skill does not support partial re-assessment; a full run is required
|
|
493
|
+
|
|
494
|
+
---
|
|
495
|
+
|
|
496
|
+
### 19. /assess-me command not found or fails to start
|
|
497
|
+
|
|
498
|
+
**Symptoms:**
|
|
499
|
+
- Running `/assess-me` produces no response or a "command not found" error
|
|
500
|
+
- The command appears in listings but does not execute
|
|
501
|
+
|
|
502
|
+
**Cause:** Either the command file is missing or its YAML frontmatter is malformed.
|
|
503
|
+
|
|
504
|
+
**Solution:**
|
|
505
|
+
1. Verify the command file exists at `src/claude/commands/assess-me.md`
|
|
506
|
+
2. Verify the skill file exists at `.claude/skills/assessing-entrepreneur/SKILL.md` (operational) or `src/claude/skills/assessing-entrepreneur/SKILL.md` (source)
|
|
507
|
+
3. Open the command file and confirm valid YAML frontmatter with `name: assess-me`
|
|
508
|
+
4. If the file is missing, restore from source control or re-run the story that created it (STORY-465)
|
|
509
|
+
|
|
510
|
+
---
|
|
511
|
+
|
|
512
|
+
### 20. entrepreneur-assessor subagent not found
|
|
513
|
+
|
|
514
|
+
**Symptoms:**
|
|
515
|
+
- Phase 8 fails with a subagent resolution error
|
|
516
|
+
- Error message references `entrepreneur-assessor` not being found
|
|
517
|
+
|
|
518
|
+
**Cause:** The subagent definition file is missing from the agents directory.
|
|
519
|
+
|
|
520
|
+
**Solution:**
|
|
521
|
+
1. Verify the subagent file exists at `src/claude/agents/entrepreneur-assessor.md`
|
|
522
|
+
2. Confirm the operational copy also exists at `.claude/agents/entrepreneur-assessor.md`
|
|
523
|
+
3. If missing, restore from source control:
|
|
524
|
+
```bash
|
|
525
|
+
git checkout main -- src/claude/agents/entrepreneur-assessor.md
|
|
526
|
+
```
|
|
527
|
+
4. Verify the file contains valid YAML frontmatter with `name: entrepreneur-assessor` and a `tools:` field
|
|
528
|
+
|
|
529
|
+
<!-- SECTION: assessing-entrepreneur END -->
|
|
530
|
+
|
|
531
|
+
---
|
|
532
|
+
|
|
533
|
+
<!-- SECTION: coaching-entrepreneur START -->
|
|
534
|
+
|
|
535
|
+
### 21. Session log not created after coaching session completes
|
|
536
|
+
|
|
537
|
+
**Symptoms:**
|
|
538
|
+
- The coaching session completes normally but no `session-log.yaml` file exists at `devforgeai/specs/business/coaching/session-log.yaml`
|
|
539
|
+
- Subsequent sessions open without any tone adaptation
|
|
540
|
+
|
|
541
|
+
**Cause:** The session log is written at session close. If the coaching skill did not execute its session-close phase — for example, because the session ended abruptly — the file is never created. If the target directory `devforgeai/specs/business/coaching/` does not exist, the write fails silently.
|
|
542
|
+
|
|
543
|
+
**Solution:**
|
|
544
|
+
1. Verify the target directory exists: `devforgeai/specs/business/coaching/`
|
|
545
|
+
2. If the directory is missing, create it and re-run the coaching session
|
|
546
|
+
3. After a successful session, the file should contain at minimum:
|
|
547
|
+
```yaml
|
|
548
|
+
sessions:
|
|
549
|
+
- date: "2026-03-04T00:00:00Z"
|
|
550
|
+
emotional_state: neutral
|
|
551
|
+
```
|
|
552
|
+
4. If the file is still not created, restore the coaching skill from source control:
|
|
553
|
+
```bash
|
|
554
|
+
git checkout main -- src/claude/skills/coaching-entrepreneur/
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
---
|
|
558
|
+
|
|
559
|
+
### 22. Tone adaptation not applied at session start despite existing session log
|
|
560
|
+
|
|
561
|
+
**Symptoms:**
|
|
562
|
+
- `session-log.yaml` exists and contains a prior entry with an emotional state value
|
|
563
|
+
- The coaching session opens with neutral, generic tone rather than adapted tone
|
|
564
|
+
|
|
565
|
+
**Cause:** The coaching skill reads `session-log.yaml` during session initialization. If the file is present but the initialization step does not read it, or the file is malformed (missing `emotional_state` key), adaptation is skipped.
|
|
566
|
+
|
|
567
|
+
**Solution:**
|
|
568
|
+
1. Open `session-log.yaml` and confirm each entry has a valid `emotional_state` value:
|
|
569
|
+
```yaml
|
|
570
|
+
emotional_state: frustrated # valid: energized|focused|neutral|tired|frustrated|anxious|overwhelmed
|
|
571
|
+
```
|
|
572
|
+
2. Verify the skill's session-initialization step reads the log and extracts the most recent entry's `emotional_state`
|
|
573
|
+
3. If the key is present but adaptation still does not apply, trace the flow from the Read() call through to the opening message
|
|
574
|
+
|
|
575
|
+
---
|
|
576
|
+
|
|
577
|
+
### 23. User override of emotional state not persisted in session log
|
|
578
|
+
|
|
579
|
+
**Symptoms:**
|
|
580
|
+
- During a session, the user states a different emotional state
|
|
581
|
+
- The coaching skill acknowledges and adapts tone for the remainder of the session
|
|
582
|
+
- At session close, `session-log.yaml` still shows the original state
|
|
583
|
+
|
|
584
|
+
**Cause:** The session-close write step may use the session-open value rather than the current (overridden) value.
|
|
585
|
+
|
|
586
|
+
**Solution:**
|
|
587
|
+
1. Verify the skill tracks the active emotional state in a mutable variable, updating it on override
|
|
588
|
+
2. Confirm the session-close write step reads the current (post-override) state
|
|
589
|
+
3. After a session with an override, `session-log.yaml` should reflect:
|
|
590
|
+
```yaml
|
|
591
|
+
- date: "2026-03-04T12:00:00Z"
|
|
592
|
+
emotional_state: tired
|
|
593
|
+
override: "Actually feeling great, let's push hard"
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
---
|
|
597
|
+
|
|
598
|
+
### 24. Emotional state enum validation fails on session-log.yaml load
|
|
599
|
+
|
|
600
|
+
**Symptoms:**
|
|
601
|
+
- Session initialization fails with a validation error referencing `session-log.yaml`
|
|
602
|
+
- Error indicates an unrecognized value for `emotional_state`
|
|
603
|
+
|
|
604
|
+
**Cause:** The `emotional_state` field holds a value outside the defined enum. This occurs if the file was edited manually or a typo was introduced.
|
|
605
|
+
|
|
606
|
+
**Valid enum values:**
|
|
607
|
+
```
|
|
608
|
+
energized | focused | neutral | tired | frustrated | anxious | overwhelmed
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
**Solution:**
|
|
612
|
+
1. Open `session-log.yaml` and locate the invalid value
|
|
613
|
+
2. Replace with the closest valid enum member or the safe default:
|
|
614
|
+
```yaml
|
|
615
|
+
emotional_state: neutral
|
|
616
|
+
```
|
|
617
|
+
3. If the user declined to provide a state, the log must record `neutral` — verify the decline path writes `neutral` rather than an empty string
|
|
618
|
+
|
|
619
|
+
<!-- SECTION: coaching-entrepreneur END -->
|
|
620
|
+
|
|
621
|
+
---
|
|
622
|
+
|
|
623
|
+
## Getting Help
|
|
624
|
+
|
|
625
|
+
If none of the above solutions resolve your issue:
|
|
626
|
+
|
|
627
|
+
1. **Check the RCA archive:** `devforgeai/RCA/` contains root cause analyses for previously encountered issues
|
|
628
|
+
2. **Review ADRs:** `devforgeai/specs/adrs/` documents architectural decisions that may affect behavior
|
|
629
|
+
3. **Run alignment audit:** The `/audit-alignment` command detects configuration drift between layers
|
|
630
|
+
4. **Invoke diagnosis:** Use the root-cause-diagnosis skill at `.claude/skills/root-cause-diagnosis/SKILL.md`
|
|
631
|
+
5. **Escalate:** Use AskUserQuestion to surface the issue for manual investigation
|