@itz4blitz/agentful 0.1.11 → 0.2.0

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/README.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # agentful
2
2
 
3
- Autonomous product development framework for Claude Code.
3
+ Human-in-the-loop development framework for Claude Code.
4
4
 
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
6
  [![npm version](https://badge.fury.io/js/%40itz4blitz%2Fagentful.svg)](https://www.npmjs.com/package/@itz4blitz/agentful)
7
7
 
8
8
  ## Overview
9
9
 
10
- agentful is a Claude Code configuration that provides structured autonomous development through specialized AI agents. It coordinates multiple agents to implement features, write tests, and validate code quality according to a defined product specification.
10
+ agentful is a Claude Code configuration that provides structured development through specialized AI agents. It coordinates multiple agents to implement features, write tests, and validate code quality according to a defined product specification, with human checkpoints for key decisions.
11
11
 
12
12
  ## Installation
13
13
 
@@ -53,7 +53,7 @@ Create your specification manually:
53
53
  claude # Start Claude Code
54
54
  ```
55
55
 
56
- Then use the `/agentful-start` command to begin autonomous development.
56
+ Then use the `/agentful-start` command to begin structured development.
57
57
 
58
58
  #### New Projects (No Existing Code)
59
59
 
@@ -135,7 +135,7 @@ Code changes are validated against:
135
135
 
136
136
  ### State Tracking
137
137
 
138
- Runtime state is stored in `.agentful/`:
138
+ Runtime state is stored in `.agentful/` (gitignored, managed by npm package):
139
139
 
140
140
  - `state.json` - Current task and phase
141
141
  - `completion.json` - Feature completion status
@@ -144,13 +144,28 @@ Runtime state is stored in `.agentful/`:
144
144
  - New projects: Starts with declared stack (`confidence: 0.4`)
145
145
  - Existing projects: Detected from code (`confidence: 0.8-1.0`)
146
146
  - Re-analyzed after first implementation in new projects
147
+ - `last-validation.json` - Latest test/lint results
148
+ - `conversation-history.json` - Session tracking
149
+
150
+ User configuration is stored in `.claude/` (version controlled):
151
+
152
+ - `agents/` - Agent definitions (core + custom + ephemeral)
153
+ - `commands/` - Slash commands
154
+ - `product/` - Product specifications
155
+ - `index.md` - Main product spec (user editable)
156
+ - `product-analysis.json` - Readiness analysis (generated by `/agentful-product`)
157
+ - `domains/` - Optional hierarchical structure
158
+ - `skills/` - Reusable skill modules
159
+ - `settings.json` - Project configuration
160
+
161
+ **See [ARCHITECTURE.md](./ARCHITECTURE.md) for detailed explanation of file organization.**
147
162
 
148
163
  ## Commands
149
164
 
150
165
  | Command | Description |
151
166
  |---------|-------------|
152
167
  | `/agentful-product` | Smart product planning: create, analyze, and refine requirements |
153
- | `/agentful-start` | Start or resume autonomous development |
168
+ | `/agentful-start` | Start or resume structured development |
154
169
  | `/agentful-status` | Display progress and current state |
155
170
  | `/agentful-validate` | Run all quality checks |
156
171
  | `/agentful-decide` | Answer pending decisions |
@@ -188,11 +203,13 @@ your-project/
188
203
  │ ├── commands/ # Slash commands
189
204
  │ ├── skills/ # Reusable skills
190
205
  │ └── settings.json # Configuration
191
- ├── .agentful/ # Runtime state
206
+ ├── .agentful/ # Runtime state (gitignored)
192
207
  │ ├── state.json
193
208
  │ ├── completion.json
194
209
  │ ├── decisions.json
195
- └── architecture.json
210
+ ├── architecture.json
211
+ │ ├── last-validation.json
212
+ │ └── conversation-history.json
196
213
  └── src/ # Source code
197
214
  ```
198
215
 
package/bin/cli.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * agentful CLI
5
- * An opinionated autonomous product development kit for Claude Code
5
+ * An opinionated human-in-the-loop product development kit for Claude Code
6
6
  */
7
7
 
8
8
  import fs from 'fs';
@@ -74,9 +74,9 @@ function showHelp() {
74
74
  console.log(` ${colors.dim}(Detection based on: # of domains, frameworks, monorepo status)${colors.reset}`);
75
75
  console.log(` 2. ${colors.bright}Edit your product specification${colors.reset}`);
76
76
  console.log(` 3. Run ${colors.bright}claude${colors.reset} to start Claude Code`);
77
- console.log(` 4. Type ${colors.bright}/agentful${colors.reset} for natural conversation or ${colors.bright}/agentful-start${colors.reset} for autonomous development`);
77
+ console.log(` 4. Type ${colors.bright}/agentful${colors.reset} for natural conversation or ${colors.bright}/agentful-start${colors.reset} for structured development`);
78
78
  console.log('');
79
- console.log('FOR 24/7 DEVELOPMENT:');
79
+ console.log('FOR EXTENDED DEVELOPMENT SESSIONS:');
80
80
  console.log(` ${colors.cyan}/ralph-loop "/agentful-start" --max-iterations 50 --completion-promise "AGENTFUL_COMPLETE"${colors.reset}`);
81
81
  console.log('');
82
82
  }
@@ -442,7 +442,7 @@ ${analysis && analysis.domains.length > 0 ? analysis.domains.map((d, i) => `${i
442
442
  }
443
443
 
444
444
  console.log(` 2. ${colors.cyan}Run: claude${colors.reset}`);
445
- console.log(` 3. ${colors.cyan}Type: /agentful${colors.reset} (natural) or ${colors.cyan}/agentful-start${colors.reset} (autonomous)`);
445
+ console.log(` 3. ${colors.cyan}Type: /agentful${colors.reset} (natural) or ${colors.cyan}/agentful-start${colors.reset} (structured)`);
446
446
  console.log('');
447
447
 
448
448
  if (usingHierarchical) {
@@ -453,7 +453,7 @@ ${analysis && analysis.domains.length > 0 ? analysis.domains.map((d, i) => `${i
453
453
  console.log('');
454
454
  }
455
455
 
456
- log(colors.dim, 'For autonomous 24/7 development:');
456
+ log(colors.dim, 'For extended development sessions with fewer interruptions:');
457
457
  log(colors.cyan, ` /ralph-loop "/agentful-start" --max-iterations 50 --completion-promise "AGENTFUL_COMPLETE"`);
458
458
  console.log('');
459
459
  }
@@ -0,0 +1,120 @@
1
+ # Agentful Hooks
2
+
3
+ This directory contains hook scripts that enhance Claude Code's behavior with agentful.
4
+
5
+ ## Scripts
6
+
7
+ ### `analyze-trigger.sh`
8
+
9
+ **Purpose**: Suggests running `/agentful-analyze` when key configuration files change.
10
+
11
+ **Triggers on**:
12
+ - `package.json` (root only, excludes node_modules)
13
+ - `architecture.json`
14
+ - `tsconfig.json` / `jsconfig.json`
15
+ - Build configs: `vite.config.*`, `webpack.config.*`, `rollup.config.*`, `next.config.*`
16
+ - Environment templates: `.env.example`, `.env.sample`
17
+ - Docker files: `docker-compose.yml`, `Dockerfile`
18
+
19
+ **Behavior**:
20
+ - Runs on PostToolUse for Write/Edit operations
21
+ - Exits silently for non-matching files
22
+ - Outputs suggestion message for matching files
23
+ - Timeout: 3 seconds
24
+
25
+ **Usage**: Automatically triggered by hooks. Can be tested manually:
26
+ ```bash
27
+ FILE="package.json" bash bin/hooks/analyze-trigger.sh
28
+ ```
29
+
30
+ ### `health-check.sh`
31
+
32
+ **Purpose**: Performs lightweight startup checks for agentful configuration.
33
+
34
+ **Checks**:
35
+ - `.agentful/` directory exists
36
+ - `architecture.json` exists
37
+ - Project has a package manager config (package.json, pyproject.toml, go.mod, or Cargo.toml)
38
+
39
+ **Behavior**:
40
+ - Runs on SessionStart
41
+ - Outputs "Agentful ready." if all checks pass
42
+ - Lists warnings for missing components
43
+ - Always exits with code 0 (non-blocking)
44
+ - Timeout: 5 seconds
45
+
46
+ **Usage**: Automatically triggered on session start. Can be tested manually:
47
+ ```bash
48
+ bash bin/hooks/health-check.sh
49
+ ```
50
+
51
+ ## Hook Configuration
52
+
53
+ Hooks are configured in `.claude/settings.json`:
54
+
55
+ ```json
56
+ {
57
+ "hooks": {
58
+ "SessionStart": [
59
+ {
60
+ "hooks": [
61
+ {
62
+ "type": "command",
63
+ "command": "bash bin/hooks/health-check.sh",
64
+ "timeout": 5
65
+ }
66
+ ]
67
+ }
68
+ ],
69
+ "PostToolUse": [
70
+ {
71
+ "matcher": "Write|Edit",
72
+ "hooks": [
73
+ {
74
+ "type": "command",
75
+ "command": "bash bin/hooks/analyze-trigger.sh",
76
+ "timeout": 3
77
+ }
78
+ ]
79
+ }
80
+ ]
81
+ }
82
+ }
83
+ ```
84
+
85
+ ## Design Principles
86
+
87
+ 1. **Fast**: All hooks complete in under 5 seconds
88
+ 2. **Non-blocking**: Always exit with code 0 to avoid interrupting workflow
89
+ 3. **Helpful**: Provide actionable suggestions, not errors
90
+ 4. **Smart**: Only trigger on relevant files (exclude node_modules, etc.)
91
+ 5. **Lightweight**: No heavy analysis, just quick checks and suggestions
92
+
93
+ ## Adding New Hooks
94
+
95
+ When adding new hooks:
96
+
97
+ 1. Keep execution time under 10 seconds
98
+ 2. Use `set -e` and proper error handling
99
+ 3. Exit with code 0 for success (non-blocking)
100
+ 4. Output clear, actionable messages
101
+ 5. Test edge cases (missing files, node_modules, etc.)
102
+ 6. Document the hook in this README
103
+ 7. Update `.claude/settings.json` with appropriate timeout
104
+
105
+ ## Testing
106
+
107
+ Test hooks manually before committing:
108
+
109
+ ```bash
110
+ # Test analyze-trigger with different files
111
+ FILE="package.json" bash bin/hooks/analyze-trigger.sh
112
+ FILE="node_modules/pkg/package.json" bash bin/hooks/analyze-trigger.sh
113
+ FILE="src/index.ts" bash bin/hooks/analyze-trigger.sh
114
+
115
+ # Test health-check
116
+ bash bin/hooks/health-check.sh
117
+
118
+ # Validate JSON
119
+ jq empty .claude/settings.json
120
+ ```
@@ -0,0 +1,57 @@
1
+ #!/bin/bash
2
+
3
+ # analyze-trigger.sh
4
+ # Checks if changed files warrant an /agentful-analyze suggestion
5
+
6
+ FILE="${FILE:-}"
7
+
8
+ # Exit silently if no file specified
9
+ if [ -z "$FILE" ]; then
10
+ exit 0
11
+ fi
12
+
13
+ # Normalize the file path to get just the filename
14
+ FILENAME=$(basename "$FILE")
15
+ FILEPATH="$FILE"
16
+
17
+ # Check for key files that should trigger analysis suggestions
18
+ case "$FILENAME" in
19
+ package.json)
20
+ # Only trigger for root package.json, not node_modules
21
+ if echo "$FILEPATH" | grep -q "node_modules"; then
22
+ exit 0
23
+ fi
24
+ echo "Dependencies changed in package.json. Consider running /agentful-analyze to update architecture understanding."
25
+ exit 0
26
+ ;;
27
+
28
+ architecture.json)
29
+ echo "Architecture configuration updated. Run /agentful-analyze to refresh tech stack analysis."
30
+ exit 0
31
+ ;;
32
+
33
+ tsconfig.json|jsconfig.json)
34
+ echo "TypeScript/JavaScript configuration changed. Consider running /agentful-analyze to update build settings."
35
+ exit 0
36
+ ;;
37
+
38
+ vite.config.*|webpack.config.*|rollup.config.*|next.config.*)
39
+ echo "Build configuration changed. Consider running /agentful-analyze to update bundler settings."
40
+ exit 0
41
+ ;;
42
+
43
+ .env.example|.env.sample)
44
+ echo "Environment template changed. Consider running /agentful-analyze to update configuration understanding."
45
+ exit 0
46
+ ;;
47
+
48
+ docker-compose.yml|Dockerfile)
49
+ echo "Docker configuration changed. Consider running /agentful-analyze to update deployment setup."
50
+ exit 0
51
+ ;;
52
+
53
+ *)
54
+ # No suggestion needed for other files
55
+ exit 0
56
+ ;;
57
+ esac
@@ -0,0 +1,36 @@
1
+ #!/bin/bash
2
+
3
+ # health-check.sh
4
+ # Lightweight startup health check for agentful
5
+
6
+ # Exit early on any error
7
+ set -e
8
+
9
+ # Check if .agentful directory exists
10
+ if [ ! -d ".agentful" ]; then
11
+ echo "Agentful not initialized. Run /agentful-start to set up."
12
+ exit 0
13
+ fi
14
+
15
+ # Check for critical files
16
+ WARNINGS=()
17
+
18
+ if [ ! -f ".agentful/architecture.json" ]; then
19
+ WARNINGS+=("Architecture config missing. Run /agentful-analyze to detect tech stack.")
20
+ fi
21
+
22
+ if [ ! -f "package.json" ] && [ ! -f "pyproject.toml" ] && [ ! -f "go.mod" ] && [ ! -f "Cargo.toml" ]; then
23
+ WARNINGS+=("No package manager config found. Project structure unclear.")
24
+ fi
25
+
26
+ # Output any warnings
27
+ if [ ${#WARNINGS[@]} -gt 0 ]; then
28
+ echo "Agentful Health Check:"
29
+ for warning in "${WARNINGS[@]}"; do
30
+ echo " - $warning"
31
+ done
32
+ else
33
+ echo "Agentful ready."
34
+ fi
35
+
36
+ exit 0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@itz4blitz/agentful",
3
- "version": "0.1.11",
4
- "description": "Autonomous product development kit for Claude Code with smart product analysis and natural conversation",
3
+ "version": "0.2.0",
4
+ "description": "Human-in-the-loop development kit for Claude Code with smart product analysis and natural conversation",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "agentful": "bin/cli.js"
@@ -24,7 +24,7 @@
24
24
  ],
25
25
  "keywords": [
26
26
  "claude-code",
27
- "autonomous",
27
+ "human-in-the-loop",
28
28
  "ai-development",
29
29
  "agent",
30
30
  "productivity"
@@ -36,17 +36,22 @@
36
36
  "url": "git+https://github.com/itz4blitz/agentful.git"
37
37
  },
38
38
  "homepage": "https://agentful.app",
39
+ "publishConfig": {
40
+ "access": "public",
41
+ "provenance": true
42
+ },
39
43
  "engines": {
40
44
  "node": ">=22.0.0"
41
45
  },
42
46
  "devDependencies": {
43
47
  "@semantic-release/changelog": "^6.0.3",
44
48
  "@semantic-release/commit-analyzer": "^13.0.0",
49
+ "@semantic-release/exec": "^6.0.3",
45
50
  "@semantic-release/git": "^10.0.1",
46
51
  "@semantic-release/github": "^11.0.1",
47
- "@semantic-release/npm": "^12.0.1",
52
+ "@semantic-release/npm": "^13.1.3",
48
53
  "@semantic-release/release-notes-generator": "^14.0.1",
49
- "semantic-release": "^24.2.0",
54
+ "semantic-release": "^25.0.2",
50
55
  "vocs": "^1.4.1"
51
56
  }
52
57
  }