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.
@@ -0,0 +1,398 @@
1
+ # DevForgeAI Developer Guide
2
+
3
+ **Last Updated:** 2026-03-04
4
+ **Applies To:** DevForgeAI Framework v1.x
5
+
6
+ ---
7
+
8
+ ## Table of Contents
9
+
10
+ - [Development Setup](#development-setup)
11
+ - [Project Structure](#project-structure)
12
+ - [Workflow Overview](#workflow-overview)
13
+ - [Testing](#testing)
14
+ - [Adding New Components](#adding-new-components)
15
+
16
+ ---
17
+
18
+ ## Development Setup
19
+
20
+ ```bash
21
+ # Clone the repository
22
+ git clone https://github.com/bankielewicz/DevForgeAI.git
23
+ cd DevForgeAI
24
+
25
+ # Install Node.js dependencies
26
+ npm install
27
+
28
+ # Install Python CLI in development mode
29
+ pip install -e .claude/scripts/
30
+
31
+ # Verify installation
32
+ devforgeai-validate --help
33
+ npm test
34
+ ```
35
+
36
+ ### Prerequisites
37
+
38
+ - Node.js >= 18.0.0
39
+ - Python >= 3.10
40
+ - Git
41
+ - Claude Code Terminal
42
+
43
+ ---
44
+
45
+ ## Project Structure
46
+
47
+ DevForgeAI uses a dual-path architecture:
48
+
49
+ | Path | Purpose | Editable |
50
+ |------|---------|----------|
51
+ | `src/` | Development source files | Yes — all implementation work goes here |
52
+ | `.claude/` | Operational runtime files | Synced from `src/` after changes |
53
+ | `devforgeai/specs/context/` | Constitutional constraint files | Requires ADR to modify |
54
+
55
+ Tests always run against the `src/` tree to avoid WSL path issues with operational folders.
56
+
57
+ ---
58
+
59
+ ## Workflow Overview
60
+
61
+ ```
62
+ /brainstorm → /ideate → /create-context → /create-epic → /create-story → /dev → /qa → /release
63
+ ```
64
+
65
+ Each slash command delegates to a skill in `.claude/skills/` which orchestrates subagents from `.claude/agents/`.
66
+
67
+ ---
68
+
69
+ ## Testing
70
+
71
+ ```bash
72
+ # Node.js tests (Jest)
73
+ npm test
74
+ npm run test:unit
75
+ npm run test:coverage
76
+
77
+ # Python tests (pytest)
78
+ pytest .claude/scripts/devforgeai_cli/tests/
79
+ pytest .claude/scripts/devforgeai_cli/tests/ --cov=devforgeai_cli
80
+ ```
81
+
82
+ ---
83
+
84
+ ## Adding New Components
85
+
86
+ | Component | Command | Location |
87
+ |-----------|---------|----------|
88
+ | Subagent | `/create-agent` | `.claude/agents/{name}.md` |
89
+ | Skill | Use `skill-creator` skill | `.claude/skills/{name}/SKILL.md` |
90
+ | Slash Command | Manual creation | `.claude/commands/{name}.md` |
91
+
92
+ All new components must be added to both `src/` and `.claude/` paths.
93
+
94
+ ---
95
+
96
+ <!-- Module-specific developer guidance is appended below as sections -->
97
+
98
+ <!-- SECTION: assessing-entrepreneur START -->
99
+ ## Assessing Entrepreneur
100
+
101
+ The `assessing-entrepreneur` skill collects self-reported work-style preferences across 6 dimensions and produces a structured profile at `devforgeai/specs/business/user-profile.yaml`. The profile drives plan calibration, task granularity, and coaching style across downstream business skills.
102
+
103
+ This skill never diagnoses mental health conditions. All questions capture self-reported preferences only.
104
+
105
+ ### File Layout
106
+
107
+ | File | Purpose | Lines |
108
+ |------|---------|-------|
109
+ | `src/claude/skills/assessing-entrepreneur/SKILL.md` | 9-phase assessment workflow | ~196 |
110
+ | `src/claude/agents/entrepreneur-assessor.md` | Normalizes responses into profile | ~128 |
111
+ | `src/claude/skills/assessing-entrepreneur/references/work-style-questionnaire.md` | 12 questions across 6 dimensions | ~270 |
112
+ | `src/claude/skills/assessing-entrepreneur/references/plan-calibration-engine.md` | Maps profile to 7 adaptive dimensions | ~153 |
113
+ | `src/claude/skills/assessing-entrepreneur/references/adhd-adaptation-framework.md` | Focus and micro-chunking strategies | ~95 |
114
+ | `src/claude/skills/assessing-entrepreneur/references/confidence-assessment-workflow.md` | Progressive exposure techniques | ~121 |
115
+
116
+ ### Assessment Dimensions
117
+
118
+ The questionnaire covers 6 dimensions, each asked via `AskUserQuestion` with bounded options (2-5 choices, some `multiSelect: true`):
119
+
120
+ 1. **Work Style** -- daily structure, environment, collaboration (3 questions)
121
+ 2. **Task Completion** -- project patterns, interruption recovery (2 questions)
122
+ 3. **Motivation** -- primary drivers, drop-off points (2 questions, both multiSelect)
123
+ 4. **Energy Management** -- peak focus hours, recovery methods (2 questions)
124
+ 5. **Previous Attempts** -- experience level, lessons learned (2 questions)
125
+ 6. **Self-Reported Challenges** -- primary challenges, support preferences (2 questions, both multiSelect)
126
+
127
+ ### Profile Output
128
+
129
+ The entrepreneur-assessor subagent normalizes questionnaire responses into `devforgeai/specs/business/user-profile.yaml`. The profile contains two layers:
130
+
131
+ **Per-dimension data** (6 sections matching the questionnaire):
132
+
133
+ ```yaml
134
+ dimensions:
135
+ work_style:
136
+ primary_pattern: "flexible-flow"
137
+ secondary_pattern: "inspiration-driven"
138
+ adaptations: ["flexible-scheduling", "environment-anchoring"]
139
+ # ... 5 more dimension blocks
140
+ ```
141
+
142
+ **7-dimension adaptive profile** (consumed by downstream skills):
143
+
144
+ ```yaml
145
+ adaptive_profile:
146
+ task_chunk_size: micro # micro | standard | extended
147
+ session_length: short # short | medium | long
148
+ check_in_frequency: frequent # frequent | moderate | minimal
149
+ progress_visualization: per_task # per_task | daily | weekly
150
+ celebration_intensity: high # high | medium | low
151
+ reminder_style: specific # specific | balanced | gentle
152
+ overwhelm_prevention: strict # strict | moderate | open
153
+ ```
154
+
155
+ ### Architecture
156
+
157
+ ```
158
+ SKILL.md (orchestrates phases 1-9)
159
+ |
160
+ |-- Phases 2-7: AskUserQuestion per dimension
161
+ | (questions loaded from references/work-style-questionnaire.md)
162
+ |
163
+ |-- Phase 8: Task(subagent_type="entrepreneur-assessor")
164
+ | Normalizes responses -> user-profile.yaml
165
+ |
166
+ |-- Phase 9: Results summary displayed to user
167
+ |
168
+ +-- Reference files loaded on demand:
169
+ adhd-adaptation-framework.md (Phase 8-9, focus challenges)
170
+ confidence-assessment-workflow.md (Phase 8-9, confidence patterns)
171
+ plan-calibration-engine.md (Phase 8-9, plan adjustment)
172
+ ```
173
+
174
+ The entrepreneur-assessor subagent handles normalization only (single responsibility). It does not generate plans or invoke other subagents. Its tools are restricted to `Read`, `Glob`, `Grep`, and `AskUserQuestion`.
175
+
176
+ ### Extending the Module
177
+
178
+ **Adding a new dimension:**
179
+
180
+ 1. Add questions to `references/work-style-questionnaire.md` under a new `## Dimension N:` section
181
+ 2. Add a matching phase in `SKILL.md` between the last dimension phase and Phase 8
182
+ 3. Update the `REQUIRED_DIMENSIONS` list in `tests/STORY-465/test_ac2_questionnaire_dimensions.py`
183
+ 4. Add a dimension block to the `dimensions:` section of `user-profile.yaml`
184
+
185
+ **Adding a new adaptive profile field:**
186
+
187
+ 1. Define the enum values and range in `references/plan-calibration-engine.md` under "Seven-Dimension Adaptive Calibration"
188
+ 2. Add the field to the `adaptive_profile:` section in `SKILL.md` Profile Synthesis Output
189
+ 3. Update `devforgeai/specs/business/user-profile.yaml` with the new field
190
+
191
+ **Adding a new reference file:**
192
+
193
+ 1. Create the file in `src/claude/skills/assessing-entrepreneur/references/`
194
+ 2. Add a row to the Reference Files table in `SKILL.md`
195
+ 3. Add a test for the file in `tests/STORY-465/test_ac4_reference_files.py`
196
+
197
+ ### Key Constraints
198
+
199
+ - All questions use `AskUserQuestion` with bounded options (not free-text). This keeps the assessment to ~10-15 minutes.
200
+ - Phase 1 requires explicit user consent before proceeding.
201
+ - The skill never uses diagnostic language. Use "self-reported", "preferences", "patterns" -- never "diagnosis", "condition", "disorder".
202
+ - Reference files use progressive disclosure: `SKILL.md` stays under 200 lines, deep content lives in `references/`.
203
+ - The subagent produces output framed as self-reported preferences, never clinical assessments.
204
+
205
+ ### Tests
206
+
207
+ 47 tests across 5 files in `tests/STORY-465/`:
208
+
209
+ | File | Tests | Validates |
210
+ |------|-------|-----------|
211
+ | `test_ac1_skill_structure.py` | 8 | SKILL.md path, frontmatter, size, name |
212
+ | `test_ac2_questionnaire_dimensions.py` | 14 | All 6 dimensions present, AskUserQuestion usage |
213
+ | `test_ac3_assessor_subagent.py` | 8 | Subagent path, frontmatter, tool restrictions |
214
+ | `test_ac4_reference_files.py` | 13 | 4 reference files exist with valid content |
215
+ | `test_ac5_safety_disclaimers.py` | 3 | Disclaimer present, no diagnostic language |
216
+
217
+ Run them with:
218
+
219
+ ```bash
220
+ pytest tests/STORY-465/ -v
221
+ ```
222
+ <!-- SECTION: assessing-entrepreneur END -->
223
+
224
+ <!-- SECTION: coaching-entrepreneur START -->
225
+ ## Coaching Entrepreneur
226
+
227
+ The `coaching-entrepreneur` skill delivers adaptive business coaching by dynamically blending two personas — Coach (empathetic, encouraging) and Consultant (structured, deliverable-focused) — based on user emotional state and context. The skill reads the user profile from `/assess-me` to calibrate persona transitions, task granularity, and celebration intensity without modifying the profile. Emotional state tracking across sessions (STORY-468) extends the skill with a persistent session log that adapts the opening tone of each new session based on the user's self-reported state from the previous one.
228
+
229
+ ### File Layout
230
+
231
+ | File | Purpose | Lines |
232
+ |------|---------|-------|
233
+ | `src/claude/skills/coaching-entrepreneur/SKILL.md` | Persona blend workflow and session orchestration | target ≤1000 |
234
+ | `src/claude/agents/business-coach.md` | Executes coaching logic with persona-aware prompting | target ≤500 |
235
+ | `src/claude/skills/coaching-entrepreneur/references/coach-persona-prompts.md` | Empathetic language patterns, win celebration, self-doubt addressing | ~140 |
236
+ | `src/claude/skills/coaching-entrepreneur/references/consultant-frameworks.md` | Structured frameworks, deliverable templates, professional language | ~150 |
237
+ | `src/claude/skills/coaching-entrepreneur/references/persona-blend-rules.md` | Decision logic for mode shifts (user-reported state, context signals) | ~110 |
238
+ | `src/claude/skills/coaching-entrepreneur/references/profile-adaptation-engine.md` | Maps user profile dimensions to persona blend ratio, task chunking, celebration | ~130 |
239
+ | `devforgeai/specs/business/coaching/session-log.yaml` | Persistent record of per-session emotional state and user overrides | grows per session |
240
+
241
+ ### Persona Definitions
242
+
243
+ The skill defines two distinct, complementary personas:
244
+
245
+ **Coach Mode** (empathetic, emotional support):
246
+ - Triggers: User reports feeling overwhelmed, discouraged, stuck, or after completing difficult tasks
247
+ - Responsibilities: Normalize struggles, celebrate incremental progress, address self-doubt, build confidence
248
+
249
+ **Consultant Mode** (structured, deliverable-focused):
250
+ - Triggers: User reports focus, ready to work, clear on goals, or requests structured guidance
251
+ - Responsibilities: Define frameworks, break down projects, provide templates, track metrics
252
+
253
+ **Transition Rules:**
254
+ - Start in Coach mode by default (safer for new users when profile unavailable)
255
+ - If profile available, blend ratio depends on `adaptive_profile.celebration_intensity` and reported energy
256
+ - Shift within-session if user state changes
257
+ - Never switch abruptly; bridge transitions with acknowledgment
258
+
259
+ ### Profile Integration
260
+
261
+ When a `user-profile.yaml` exists (from `/assess-me`), the coaching skill reads and applies it:
262
+
263
+ | Profile Field | Coach Mode Effect | Consultant Mode Effect |
264
+ |---|---|---|
265
+ | `celebration_intensity: high` | Frequent celebration, explicit wins | Milestone ceremonies |
266
+ | `task_chunk_size: micro` | Celebrate every small win | 5-15 min task modules |
267
+ | `reminder_style: specific` | "You've got this, next is X" | "Action required: X by date" |
268
+ | `overwhelm_prevention: strict` | Show 1-2 tasks only | Milestone view |
269
+
270
+ **Fallback:** If no profile exists, defaults to 60% Coach / 40% Consultant blend with standard task chunking.
271
+
272
+ ### Architecture
273
+
274
+ ```
275
+ SKILL.md (orchestrates coaching workflow)
276
+ |
277
+ |-- Phase 1: Initialization & Profile Loading
278
+ | Reads user-profile.yaml (if exists)
279
+ | Sets persona blend ratio and adaptation parameters
280
+ |
281
+ |-- Phase 2: Session Opening
282
+ | Coach mode: Greeting, check emotional state
283
+ | Consultant mode: Confirm session goals
284
+ |
285
+ |-- Phase 3: Task(subagent_type="business-coach")
286
+ | Executes conversation with persona-aware prompting
287
+ | Handles transitions mid-session
288
+ |
289
+ +-- Reference files loaded on demand:
290
+ coach-persona-prompts.md (empathy patterns)
291
+ consultant-frameworks.md (structures)
292
+ persona-blend-rules.md (decision logic)
293
+ profile-adaptation-engine.md (customization)
294
+ ```
295
+
296
+ The business-coach subagent receives explicit persona blend instructions in its system prompt. Its tools are restricted to Read, Grep, Glob, and AskUserQuestion — no Write access.
297
+
298
+ ### Extending the Module
299
+
300
+ **Adding a new persona:**
301
+
302
+ 1. Create a new reference file: `references/{persona-name}-framework.md` with language patterns, triggers, and responsibilities
303
+ 2. Add decision logic to `references/persona-blend-rules.md` for when to activate the new persona
304
+ 3. Update `SKILL.md` initialization to include the new persona in blend calculations
305
+ 4. Extend `references/profile-adaptation-engine.md` with mappings from profile fields to new-persona intensity
306
+ 5. Add tests to `tests/STORY-467/test_ac2_persona_definitions.py` verifying the new persona is defined
307
+
308
+ **Adding a new profile-based adaptation:**
309
+
310
+ 1. Identify the profile field(s) that drive the adaptation
311
+ 2. Document the adaptation rule in `references/profile-adaptation-engine.md`
312
+ 3. Update business-coach.md system prompt to include the new rule
313
+ 4. Add test to `tests/STORY-467/test_ac4_profile_reading.py`
314
+
315
+ ### Emotional State Tracking (STORY-468)
316
+
317
+ Emotional state tracking adds cross-session memory to the coaching skill. At the start of each session, the skill reads `session-log.yaml` to check how the user reported feeling in the previous session, then adapts its opening tone accordingly. At session end, the current emotional state and any user overrides are appended to the log.
318
+
319
+ #### Session Log Schema
320
+
321
+ Path: `devforgeai/specs/business/coaching/session-log.yaml`
322
+
323
+ ```yaml
324
+ sessions:
325
+ - date: "2026-03-04T14:30:00"
326
+ emotional_state: "frustrated"
327
+ override: null
328
+ - date: "2026-03-05T09:15:00"
329
+ emotional_state: "energized"
330
+ override: null
331
+ ```
332
+
333
+ **`emotional_state` enum** (7 values):
334
+
335
+ | Value | Typical Opening Tone Adaptation |
336
+ |-------|--------------------------------|
337
+ | `energized` | "You were on fire last time — ready to keep that momentum?" |
338
+ | `focused` | "Great focus last session. Let's build on that." |
339
+ | `neutral` | Standard session opening, no prior-state callout |
340
+ | `tired` | "Last session felt heavy. Let's start lighter today." |
341
+ | `frustrated` | "Last session seemed tough. No pressure — we go at your pace." |
342
+ | `anxious` | Opens in Coach mode regardless of profile blend ratio |
343
+ | `overwhelmed` | Opens in Coach mode, shows only 1-2 tasks in first exchange |
344
+
345
+ **First-session behaviour:** When no `session-log.yaml` exists, the skill skips the cross-session read and opens with the standard profile-based greeting. The log file is created on first session completion.
346
+
347
+ #### Adding a New Emotional State Enum Value
348
+
349
+ 1. Add the value to the `emotional_state` enum in `SKILL.md` (the AskUserQuestion options list and schema documentation)
350
+ 2. Add the corresponding opening tone example to the emotional state table in this developer guide section
351
+ 3. Update `tests/STORY-468/test_ac1_session_log.py` — the expected enum values list
352
+ 4. If the new state warrants a forced persona mode, document the rule in `references/persona-blend-rules.md`
353
+
354
+ #### Adding New Session Log Fields
355
+
356
+ 1. Add the field to the session entry schema in `SKILL.md`
357
+ 2. Update the schema table in this developer guide section
358
+ 3. Extend the log-write phase in `SKILL.md` to populate the new field
359
+ 4. Add a field-presence assertion to `tests/STORY-468/test_ac1_session_log.py`
360
+
361
+ ### Key Constraints
362
+
363
+ - The skill never infers or diagnoses mental/emotional state. All persona shifts respond to user-reported state only. The AI must not inspect message sentiment or conversation history to estimate emotional state.
364
+ - Coaching skill is read-only for user-profile.yaml. Never attempt writes; respect the profile as immutable session context.
365
+ - Session log writes (`session-log.yaml`) are the only file Write the skill performs. All writes append to the `sessions` array — existing entries are never modified.
366
+ - Default to Coach mode when profile unavailable. Structure without encouragement is risky for new users.
367
+ - Default to `neutral` if the user skips the emotional check-in. Do not re-prompt.
368
+ - User overrides are respected immediately within the session and logged. The logged override is visible to the next session's tone adaptation logic.
369
+ - Persona blend instructions are fully templated in system prompts, not emergent.
370
+ - Reference files use progressive disclosure: `SKILL.md` stays under 1000 lines; deep persona content lives in `references/`.
371
+
372
+ ### Tests
373
+
374
+ **STORY-467 tests** — persona blend engine (4 files in `tests/STORY-467/`):
375
+
376
+ | File | Validates |
377
+ |------|-----------|
378
+ | `test_ac1_coaching_skill_structure.py` | SKILL.md path, frontmatter, size < 1000 lines |
379
+ | `test_ac2_persona_definitions.py` | Coach and Consultant modes defined, triggers documented, transition rules present |
380
+ | `test_ac3_business_coach_subagent.py` | Subagent path, frontmatter, tools restricted, size < 500 lines |
381
+ | `test_ac4_profile_reading.py` | Profile read without writes, adaptation mappings present, fallback behavior defined |
382
+
383
+ **STORY-468 tests** — emotional state tracking (3 files in `tests/STORY-468/`):
384
+
385
+ | File | Validates |
386
+ |------|-----------|
387
+ | `test_ac1_session_log.py` | Session log path documented in SKILL.md, schema fields present, all 7 enum values defined |
388
+ | `test_ac2_tone_adaptation.py` | Previous-session read logic present, tone adaptation examples provided for each emotional state |
389
+ | `test_ac3_user_override.py` | Override handling documented, override logging specified in session close phase |
390
+
391
+ Coverage target for all STORY-468 tests: 95%.
392
+
393
+ Run the full coaching module test suite:
394
+
395
+ ```bash
396
+ pytest tests/STORY-467/ tests/STORY-468/ -v
397
+ ```
398
+ <!-- SECTION: coaching-entrepreneur END -->
@@ -0,0 +1,48 @@
1
+ # DevForgeAI Roadmap
2
+
3
+ **Last Updated:** 2026-03-04
4
+
5
+ Items are organized by priority tier. Each item links to an epic or story when available.
6
+
7
+ ---
8
+
9
+ ## Near-Term
10
+
11
+ | Item | Epic/Story | Status |
12
+ |------|-----------|--------|
13
+ | Milestone-based plan generator | STORY-532 | In Progress |
14
+ | Assessment & coaching core | EPIC-072 | In Progress |
15
+
16
+ ---
17
+
18
+ ## Medium-Term
19
+
20
+ | Item | Epic/Story | Status |
21
+ |------|-----------|--------|
22
+ | Multi-session learning for coaching | — | Not Started |
23
+ | Additional coaching personas | — | Not Started |
24
+
25
+ ---
26
+
27
+ ## Long-Term
28
+
29
+ | Item | Epic/Story | Status |
30
+ |------|-----------|--------|
31
+ | Team coaching support | — | Not Started |
32
+ | Cross-project knowledge transfer | — | Not Started |
33
+
34
+ ---
35
+
36
+ <!-- Module-specific roadmap entries are appended below as sections -->
37
+
38
+ <!-- SECTION: coaching-entrepreneur START -->
39
+
40
+ ### Coaching Entrepreneur — Emotional State Tracking
41
+
42
+ | Item | Epic/Story | Status | Notes |
43
+ |------|-----------|--------|-------|
44
+ | Session log persistence | STORY-468 | Ready for Dev | Logs self-reported state, date, and overrides to `session-log.yaml`; depends on STORY-467 |
45
+ | Tone adaptation on session start | STORY-468 | Ready for Dev | Reads previous session log and adjusts opening tone to match prior emotional state |
46
+ | User override support | STORY-468 | Ready for Dev | User override respected immediately and logged for future sessions |
47
+
48
+ <!-- SECTION: coaching-entrepreneur END -->