@itz4blitz/agentful 0.1.9 → 0.1.11

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.
@@ -9,6 +9,43 @@ This command shows the current state of autonomous product development.
9
9
 
10
10
  ## Display Format
11
11
 
12
+ ### Product Readiness (if `.agentful/product-analysis.json` exists)
13
+
14
+ Display this section FIRST, before the header:
15
+
16
+ ```
17
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
18
+ Product Readiness: 85% ⚠️
19
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
20
+
21
+ Completeness: 92% ✅
22
+ Clarity: 88% ⚠️
23
+ Feasibility: 78% ⚠️
24
+ Testability: 85% ⚠️
25
+ Consistency: 82% ⚠️
26
+
27
+ ⚠️ 2 blocking issues - run /agentful-product to resolve
28
+
29
+ ⚠️ Product spec has minor gaps - recommend refinement
30
+
31
+ Last analyzed: 2 hours ago
32
+ Update: /agentful-product
33
+
34
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
35
+ ```
36
+
37
+ Emoji guidelines for scores:
38
+ - 90-100%: ✅
39
+ - 70-89%: ⚠️
40
+ - Below 70%: ❌
41
+
42
+ Overall readiness status:
43
+ - Score >= 90%: "✅ Product spec is ready for development"
44
+ - Score >= 70%: "⚠️ Product spec has minor gaps - recommend refinement"
45
+ - Score < 70%: "❌ Product spec needs refinement before development"
46
+
47
+ Blocking issues line only shows if there are blocking issues (count > 0).
48
+
12
49
  ### Header
13
50
 
14
51
  ```
@@ -81,10 +118,16 @@ Iterations: 24
81
118
 
82
119
  Read and display:
83
120
 
84
- 1. `.agentful/state.json` - Current work, phase, iterations
85
- 2. `.agentful/completion.json` - Features and gates
86
- 3. `.agentful/decisions.json` - Pending decisions
87
- 4. `.claude/product/index.md` - Product name and overview
121
+ 1. `.agentful/product-analysis.json` (optional) - Product readiness score and breakdown
122
+ - Only display product readiness section if this file exists
123
+ - Calculate emoji based on score thresholds (90-100: ✅, 70-89: ⚠️, <70: ❌)
124
+ - Show blocking issues count if > 0
125
+ - Format timestamp as relative time (e.g., "2 hours ago", "just now", "3 days ago")
126
+
127
+ 2. `.agentful/state.json` - Current work, phase, iterations
128
+ 3. `.agentful/completion.json` - Features and gates
129
+ 4. `.agentful/decisions.json` - Pending decisions
130
+ 5. `.claude/product/index.md` - Product name and overview
88
131
 
89
132
  Format the output nicely with ASCII art for readability.
90
133
 
@@ -40,8 +40,19 @@ npx @itz4blitz/agentful init
40
40
  | `/agentful-status` | Show completion percentage, current work |
41
41
  | `/agentful-validate` | Run quality gates (tests, lint, security) |
42
42
  | `/agentful-decide` | Answer blocking decisions |
43
+ | `/agentful-product` | Smart product requirements planning and analysis |
43
44
  | `/agentful` | Show this reference |
44
45
 
46
+ ### Product Planning (Optional)
47
+
48
+ Before starting development, you can use `/agentful-product` to:
49
+ - Create and refine product specifications
50
+ - Analyze requirements for gaps and ambiguities
51
+ - Get a readiness score before development begins
52
+ - Resolve blocking issues interactively
53
+
54
+ This is optional but recommended for complex projects. Run `/agentful-product` to get started.
55
+
45
56
  ## How It Works
46
57
 
47
58
  ### 1. Define Your Product
@@ -308,6 +319,7 @@ It learns **your project's patterns** and generates agents that match your conve
308
319
  │ └─ Template creation │
309
320
  ├─────────────────────────────────────────────┤
310
321
  │ Slash Commands (Claude Code) │
322
+ │ ├─ /agentful-product (requirements) │
311
323
  │ ├─ /agentful-start (orchestrator) │
312
324
  │ ├─ /agentful-status (progress) │
313
325
  │ ├─ /agentful-validate (quality gates) │
package/README.md CHANGED
@@ -21,7 +21,24 @@ This command creates the necessary directory structure and configuration files i
21
21
 
22
22
  ### 1. Define Product Specification
23
23
 
24
- After initialization, edit your product specification file with features and requirements.
24
+ After initialization, define your product requirements:
25
+
26
+ #### Option A: Interactive Planning (Recommended)
27
+
28
+ ```bash
29
+ claude # Start Claude Code
30
+ ```
31
+
32
+ Use `/agentful-product` for guided product planning:
33
+ - **New projects**: Interactive Q&A creates your product spec
34
+ - **Existing specs**: Analyzes for gaps, ambiguities, blocking issues
35
+ - **Readiness scoring**: Get a score (0-100) before development
36
+ - **Issue resolution**: Walk through blocking issues with smart suggestions
37
+ - **Q&A mode**: Ask planning questions in context
38
+
39
+ #### Option B: Manual Creation
40
+
41
+ Create your specification manually:
25
42
 
26
43
  **Flat structure** (single file at project root):
27
44
  - `PRODUCT.md` - All features in one file
@@ -132,6 +149,7 @@ Runtime state is stored in `.agentful/`:
132
149
 
133
150
  | Command | Description |
134
151
  |---------|-------------|
152
+ | `/agentful-product` | Smart product planning: create, analyze, and refine requirements |
135
153
  | `/agentful-start` | Start or resume autonomous development |
136
154
  | `/agentful-status` | Display progress and current state |
137
155
  | `/agentful-validate` | Run all quality checks |
package/bin/cli.js CHANGED
@@ -339,79 +339,48 @@ ${analysis && analysis.domains.length > 0 ? analysis.domains.map((d, i) => `${i
339
339
  // Update .gitignore
340
340
  checkGitignore();
341
341
 
342
- // Perform smart project analysis (unless explicitly disabled)
342
+ // Perform essential project detection (unless explicitly disabled)
343
343
  if (smart) {
344
344
  console.log('');
345
- log(colors.bright, '🔍 Analyzing your project...');
345
+ log(colors.bright, '🔍 Detecting project essentials...');
346
346
  console.log('');
347
347
 
348
348
  try {
349
- const startTime = Date.now();
350
349
  analysis = await analyzeProject(targetDir);
351
350
  await exportToArchitectureJson(targetDir, analysis);
352
- const duration = ((Date.now() - startTime) / 1000).toFixed(1);
353
351
 
354
- // Show detected tech stack
352
+ // Show only essential info
355
353
  if (analysis.language && analysis.language !== 'unknown') {
356
354
  log(colors.cyan, ` Language: ${analysis.language}`);
357
- if (analysis.primaryLanguage && analysis.primaryLanguage !== analysis.language) {
358
- log(colors.dim, ` Primary: ${analysis.primaryLanguage}`);
359
- }
360
355
  }
361
356
 
362
357
  if (analysis.frameworks.length > 0) {
363
- log(colors.cyan, ` Frameworks: ${analysis.frameworks.join(', ')}`);
358
+ log(colors.cyan, ` Framework: ${analysis.frameworks[0]}`);
364
359
  }
365
360
 
366
361
  if (analysis.packageManager && analysis.packageManager !== 'unknown') {
367
362
  log(colors.cyan, ` Package Mgr: ${analysis.packageManager}`);
368
363
  }
369
364
 
370
- if (analysis.buildSystem && analysis.buildSystem !== 'unknown') {
371
- log(colors.cyan, ` Build: ${analysis.buildSystem}`);
372
- }
373
-
374
365
  console.log('');
366
+ log(colors.dim, ` ✓ Detection complete`);
375
367
 
376
- // Show detected domains
377
- if (analysis.domains.length > 0) {
378
- log(colors.bright, '📊 Detected domains:');
379
- console.log('');
380
-
381
- analysis.domains.slice(0, 5).forEach(domain => {
382
- const confidence = analysis.domainConfidence[domain] || 0.5;
383
- const confidenceBar = '█'.repeat(Math.round(confidence * 10)) + '░'.repeat(10 - Math.round(confidence * 10));
384
- const confidencePct = Math.round(confidence * 100);
385
-
386
- // Color code based on confidence
387
- let confidenceColor = colors.red;
388
- if (confidence >= 0.8) confidenceColor = colors.green;
389
- else if (confidence >= 0.5) confidenceColor = colors.yellow;
390
-
391
- log(confidenceColor, ` • ${domain.padEnd(20)} ${confidenceBar} ${confidencePct}%`);
392
- });
393
-
394
- if (analysis.domains.length > 5) {
395
- log(colors.dim, ` ... and ${analysis.domains.length - 5} more`);
396
- }
397
-
398
- console.log('');
399
- }
400
-
401
- log(colors.dim, ` Analysis completed in ${duration}s (${Math.round(analysis.confidence * 100)}% confidence)`);
402
-
403
- // Show warnings if any
368
+ // Show critical warnings only
404
369
  if (analysis.warnings && analysis.warnings.length > 0) {
405
- console.log('');
406
- log(colors.yellow, '⚠️ Warnings:');
407
- analysis.warnings.slice(0, 3).forEach(warning => {
408
- log(colors.dim, ` • ${warning}`);
409
- });
370
+ const criticalWarnings = analysis.warnings.filter(w =>
371
+ w.includes('empty') || w.includes('not detect')
372
+ );
373
+ if (criticalWarnings.length > 0) {
374
+ console.log('');
375
+ log(colors.yellow, '⚠️ Warnings:');
376
+ criticalWarnings.forEach(warning => {
377
+ log(colors.dim, ` • ${warning}`);
378
+ });
379
+ }
410
380
  }
411
381
 
412
382
  } catch (error) {
413
- log(colors.dim, ' ⊙ Smart analysis skipped (project may be empty or unsupported)');
414
- log(colors.dim, ` Error: ${error.message}`);
383
+ log(colors.dim, ' ⊙ Detection skipped (project may be empty)');
415
384
  analysis = null;
416
385
  }
417
386
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itz4blitz/agentful",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "description": "Autonomous product development kit for Claude Code with smart product analysis and natural conversation",
5
5
  "type": "module",
6
6
  "bin": {
package/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "0.1.9"
2
+ "version": "0.1.11"
3
3
  }