@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/.claude/agents/architect.md +30 -527
- package/.claude/agents/orchestrator.md +104 -622
- package/.claude/agents/product-analyzer.md +4 -4
- package/.claude/commands/agentful-agents.md +668 -0
- package/.claude/commands/agentful-analyze.md +564 -0
- package/.claude/commands/agentful-product.md +59 -674
- package/.claude/commands/agentful-skills.md +635 -0
- package/.claude/commands/agentful-start.md +4 -4
- package/.claude/commands/agentful-status.md +2 -2
- package/.claude/commands/agentful.md +222 -13
- package/.claude/settings.json +25 -1
- package/.claude/skills/conversation/SKILL.md +292 -15
- package/README.md +24 -7
- package/bin/cli.js +5 -5
- package/bin/hooks/README.md +120 -0
- package/bin/hooks/analyze-trigger.sh +57 -0
- package/bin/hooks/health-check.sh +36 -0
- package/package.json +10 -5
- package/template/CLAUDE.md +72 -192
- package/version.json +1 -1
package/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# agentful
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Human-in-the-loop development framework for Claude Code.
|
|
4
4
|
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
[](https://www.npmjs.com/package/@itz4blitz/agentful)
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
agentful is a Claude Code configuration that provides structured
|
|
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
|
|
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
|
|
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
|
-
│
|
|
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
|
|
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
|
|
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
|
|
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} (
|
|
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
|
|
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.
|
|
4
|
-
"description": "
|
|
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
|
-
"
|
|
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": "^
|
|
52
|
+
"@semantic-release/npm": "^13.1.3",
|
|
48
53
|
"@semantic-release/release-notes-generator": "^14.0.1",
|
|
49
|
-
"semantic-release": "^
|
|
54
|
+
"semantic-release": "^25.0.2",
|
|
50
55
|
"vocs": "^1.4.1"
|
|
51
56
|
}
|
|
52
57
|
}
|