@itz4blitz/agentful 0.4.0 → 0.5.1

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.
Files changed (93) hide show
  1. package/README.md +133 -5
  2. package/bin/cli.js +1031 -47
  3. package/bin/hooks/README.md +338 -82
  4. package/bin/hooks/analyze-trigger.js +69 -0
  5. package/bin/hooks/block-random-docs.js +77 -0
  6. package/bin/hooks/health-check.js +153 -0
  7. package/bin/hooks/post-agent.js +101 -0
  8. package/bin/hooks/post-feature.js +227 -0
  9. package/bin/hooks/pre-agent.js +118 -0
  10. package/bin/hooks/pre-feature.js +138 -0
  11. package/lib/VALIDATION_README.md +455 -0
  12. package/lib/atomic.js +350 -0
  13. package/lib/ci/claude-action-integration.js +641 -0
  14. package/lib/ci/index.js +10 -0
  15. package/lib/core/CLAUDE_EXECUTOR.md +371 -0
  16. package/lib/core/README.md +321 -0
  17. package/lib/core/analyzer.js +497 -0
  18. package/lib/core/claude-executor.example.js +210 -0
  19. package/lib/core/claude-executor.js +1046 -0
  20. package/lib/core/cli.js +141 -0
  21. package/lib/core/detectors/conventions.js +342 -0
  22. package/lib/core/detectors/framework.js +276 -0
  23. package/lib/core/detectors/index.js +15 -0
  24. package/lib/core/detectors/language.js +199 -0
  25. package/lib/core/detectors/patterns.js +356 -0
  26. package/lib/core/generator.js +626 -0
  27. package/lib/core/index.js +9 -0
  28. package/lib/core/output-parser.example.js +250 -0
  29. package/lib/core/output-parser.js +458 -0
  30. package/lib/core/storage.js +515 -0
  31. package/lib/core/templates.js +556 -0
  32. package/lib/index.js +32 -0
  33. package/lib/init.js +232 -9
  34. package/lib/pipeline/cli.js +423 -0
  35. package/lib/pipeline/engine.js +928 -0
  36. package/lib/pipeline/executor.js +440 -0
  37. package/lib/pipeline/index.js +33 -0
  38. package/lib/pipeline/integrations.js +559 -0
  39. package/lib/pipeline/schemas.js +288 -0
  40. package/lib/presets.js +207 -0
  41. package/lib/remote/client.js +361 -0
  42. package/lib/server/auth.js +286 -0
  43. package/lib/server/client-example.js +190 -0
  44. package/lib/server/executor.js +426 -0
  45. package/lib/server/index.js +469 -0
  46. package/lib/update-helpers.js +505 -0
  47. package/lib/validation.js +460 -0
  48. package/package.json +19 -2
  49. package/template/.claude/agents/architect.md +260 -0
  50. package/template/.claude/agents/backend.md +203 -0
  51. package/template/.claude/agents/fixer.md +244 -0
  52. package/template/.claude/agents/frontend.md +232 -0
  53. package/template/.claude/agents/orchestrator.md +528 -0
  54. package/template/.claude/agents/product-analyzer.md +1130 -0
  55. package/template/.claude/agents/reviewer.md +229 -0
  56. package/template/.claude/agents/tester.md +242 -0
  57. package/{.claude → template/.claude}/commands/agentful-analyze.md +151 -43
  58. package/template/.claude/commands/agentful-decide.md +470 -0
  59. package/{.claude → template/.claude}/commands/agentful-product.md +89 -5
  60. package/template/.claude/commands/agentful-start.md +432 -0
  61. package/{.claude → template/.claude}/commands/agentful-status.md +88 -3
  62. package/template/.claude/commands/agentful-update.md +402 -0
  63. package/template/.claude/commands/agentful-validate.md +369 -0
  64. package/{.claude → template/.claude}/commands/agentful.md +110 -183
  65. package/template/.claude/product/EXAMPLES.md +167 -0
  66. package/{.claude → template/.claude}/settings.json +9 -13
  67. package/{.claude → template/.claude}/skills/conversation/SKILL.md +13 -7
  68. package/template/.claude/skills/deployment/SKILL.md +116 -0
  69. package/template/.claude/skills/product-planning/SKILL.md +463 -0
  70. package/template/.claude/skills/testing/SKILL.md +228 -0
  71. package/template/.claude/skills/validation/SKILL.md +650 -0
  72. package/template/CLAUDE.md +73 -5
  73. package/template/bin/hooks/block-random-docs.js +121 -0
  74. package/version.json +1 -1
  75. package/.claude/agents/architect.md +0 -524
  76. package/.claude/agents/backend.md +0 -315
  77. package/.claude/agents/fixer.md +0 -263
  78. package/.claude/agents/frontend.md +0 -274
  79. package/.claude/agents/orchestrator.md +0 -283
  80. package/.claude/agents/product-analyzer.md +0 -792
  81. package/.claude/agents/reviewer.md +0 -332
  82. package/.claude/agents/tester.md +0 -410
  83. package/.claude/commands/agentful-decide.md +0 -214
  84. package/.claude/commands/agentful-start.md +0 -182
  85. package/.claude/commands/agentful-validate.md +0 -127
  86. package/.claude/product/EXAMPLES.md +0 -610
  87. package/.claude/product/README.md +0 -326
  88. package/.claude/skills/validation/SKILL.md +0 -271
  89. package/bin/hooks/analyze-trigger.sh +0 -57
  90. package/bin/hooks/health-check.sh +0 -36
  91. /package/{.claude → template/.claude}/commands/agentful-generate.md +0 -0
  92. /package/{.claude → template/.claude}/product/index.md +0 -0
  93. /package/{.claude → template/.claude}/skills/product-tracking/SKILL.md +0 -0
@@ -1,326 +0,0 @@
1
- # Product Structure Guide
2
-
3
- agentful supports **both** flat and hierarchical product structures with automatic detection. This guide explains how to use each format.
4
-
5
- ## Quick Start
6
-
7
- ### Simple Projects (Flat Structure)
8
-
9
- Create `.claude/product/index.md` with all your features:
10
-
11
- ```bash
12
- your-project/
13
- ├── .claude/
14
- │ └── product/
15
- │ └── index.md # All features in one file
16
- ├── src/
17
- └── package.json
18
- ```
19
-
20
- ### Organized Projects (Hierarchical Structure)
21
-
22
- Create a hierarchical structure under `.claude/product/domains/`:
23
-
24
- ```bash
25
- your-project/
26
- ├── .claude/
27
- │ └── product/
28
- │ ├── index.md # Product overview
29
- │ └── domains/
30
- │ ├── authentication/
31
- │ │ ├── index.md # Domain overview
32
- │ │ └── features/
33
- │ │ ├── login.md
34
- │ │ └── register.md
35
- │ └── user-management/
36
- │ ├── index.md
37
- │ └── features/
38
- │ └── profile.md
39
- ├── src/
40
- └── package.json
41
- ```
42
-
43
- ## Auto-Detection
44
-
45
- The system automatically detects which format you're using:
46
-
47
- 1. **Hierarchical**: If `.claude/product/domains/*/index.md` exists
48
- 2. **Flat**: If `.claude/product/index.md` exists (without domains)
49
-
50
- ### Detection Algorithm
51
-
52
- ```bash
53
- if exists(".claude/product/domains/*/index.md"):
54
- → Use hierarchical structure
55
- → Track at subtask → feature → domain levels
56
- else if exists(".claude/product/index.md"):
57
- → Use flat structure
58
- → Track at feature level
59
- else:
60
- → Error: No product specification found
61
- ```
62
-
63
- ## When to Use Each Format
64
-
65
- ### Flat Structure
66
-
67
- **Use when:**
68
- - Quick prototype or MVP
69
- - Small project with 5-10 features
70
- - Single developer or small team
71
- - Simple feature list without dependencies
72
-
73
- **Example `.claude/product/index.md`:**
74
-
75
- ```markdown
76
- # My App
77
-
78
- ## Features
79
-
80
- ### 1. User Authentication - CRITICAL
81
- - Login with email/password
82
- - JWT token handling
83
- - Password reset
84
-
85
- ### 2. User Profile - HIGH
86
- - Edit profile information
87
- - Upload avatar
88
-
89
- ### 3. Dashboard - MEDIUM
90
- - Display user stats
91
- - Recent activity
92
- ```
93
-
94
- ### Hierarchical Structure
95
-
96
- **Use when:**
97
- - Large project with 20+ features
98
- - Multiple team members working in parallel
99
- - Complex feature dependencies
100
- - Need domain-driven organization
101
-
102
- **Example structure:**
103
-
104
- ```markdown
105
- <!-- .claude/product/index.md -->
106
- # My App
107
-
108
- ## Domains
109
- - Authentication (CRITICAL)
110
- - User Management (HIGH)
111
- - Dashboard (MEDIUM)
112
-
113
- <!-- .claude/product/domains/authentication/index.md -->
114
- # Authentication Domain
115
-
116
- Handles user identity and access control.
117
-
118
- ## Features
119
- - Login
120
- - Register
121
- - Password Reset
122
-
123
- <!-- .claude/product/domains/authentication/features/login.md -->
124
- # Feature: Login
125
-
126
- Priority: CRITICAL
127
-
128
- ## Subtasks
129
- 1. Create login UI
130
- 2. Implement login API
131
- 3. Add JWT handling
132
- 4. Write tests
133
- ```
134
-
135
- ## Completion Tracking
136
-
137
- ### Flat Structure Tracking
138
-
139
- ```json
140
- {
141
- "features": {
142
- "authentication": {
143
- "status": "complete",
144
- "score": 100
145
- },
146
- "user-profile": {
147
- "status": "in_progress",
148
- "score": 60
149
- }
150
- },
151
- "gates": {
152
- "tests_passing": true,
153
- "no_type_errors": true
154
- },
155
- "overall": 72
156
- }
157
- ```
158
-
159
- ### Hierarchical Structure Tracking
160
-
161
- ```json
162
- {
163
- "domains": {
164
- "authentication": {
165
- "status": "complete",
166
- "score": 100,
167
- "features": {
168
- "login": {
169
- "status": "complete",
170
- "score": 100,
171
- "subtasks": {
172
- "login-ui": { "status": "complete" },
173
- "login-api": { "status": "complete" }
174
- }
175
- }
176
- }
177
- },
178
- "user-management": {
179
- "status": "in_progress",
180
- "score": 60,
181
- "features": {
182
- "profile": {
183
- "status": "in_progress",
184
- "score": 60
185
- }
186
- }
187
- }
188
- },
189
- "gates": {
190
- "tests_passing": true,
191
- "no_type_errors": true
192
- },
193
- "overall": 72
194
- }
195
- ```
196
-
197
- ## Migration Path
198
-
199
- You can start flat and expand to hierarchical as your project grows:
200
-
201
- ```
202
- Phase 1: Quick Start
203
- └── .claude/product/index.md (all features in one file)
204
-
205
- Phase 2: Scale Up (when needed)
206
- └── .claude/product/domains/ (split by domain)
207
- ├── authentication/
208
- ├── user-management/
209
- └── dashboard/
210
- ```
211
-
212
- ### How to Migrate
213
-
214
- 1. **Create domain directories:**
215
- ```bash
216
- mkdir -p .claude/product/domains/authentication/features
217
- mkdir -p .claude/product/domains/user-management/features
218
- ```
219
-
220
- 2. **Split features into domain files:**
221
- ```bash
222
- # Move authentication features
223
- # .claude/product/domains/authentication/features/login.md
224
- # .claude/product/domains/authentication/features/register.md
225
- ```
226
-
227
- 3. **Create domain index files:**
228
- ```bash
229
- # .claude/product/domains/authentication/index.md
230
- # List overview, goals, and feature summaries
231
- ```
232
-
233
- 4. **Update .claude/product/index.md:**
234
- ```bash
235
- # Keep only product overview and domain list
236
- # Remove detailed feature specs (now in domain files)
237
- ```
238
-
239
- 5. **System auto-detects the change:**
240
- - Next agent run will detect hierarchical structure
241
- - No configuration changes needed
242
-
243
- ## Best Practices
244
-
245
- ### Flat Structure
246
-
247
- 1. **Keep features focused**: Each feature should be independently testable
248
- 2. **Use priorities**: CRITICAL, HIGH, MEDIUM, LOW
249
- 3. **Clear acceptance criteria**: Specific requirements for each feature
250
- 4. **Track progress**: Update completion.json after validated work
251
-
252
- ### Hierarchical Structure
253
-
254
- 1. **Domain boundaries**: Group related features (e.g., authentication, billing)
255
- 2. **Feature independence**: Each feature should be completable independently
256
- 3. **Subtask granularity**: Break features into small, testable subtasks
257
- 4. **Cross-domain dependencies**: Document in feature files, minimize where possible
258
-
259
- ## Examples
260
-
261
- See `.claude/product/index.md` template for a complete flat structure example.
262
-
263
- For hierarchical structure examples, check:
264
- - `.claude/agents/orchestrator.md` - Product structure reading algorithm
265
- - `.claude/skills/product-tracking/SKILL.md` - Progress tracking for both formats
266
-
267
- ## Troubleshooting
268
-
269
- ### "No product specification found"
270
-
271
- **Solution**: Create one of:
272
- - `.claude/product/index.md`
273
- - `.claude/product/domains/*/index.md`
274
-
275
- ### "Format mismatch" error
276
-
277
- **Cause**: completion.json structure doesn't match product files
278
-
279
- **Solution**: Don't mix formats. Choose one:
280
- - All flat: `.claude/product/index.md` + `completion.json` with `features` object
281
- - All hierarchical: `.claude/product/domains/` + `completion.json` with `domains` object
282
-
283
- ### Can I use both formats?
284
-
285
- **No**: The system auto-detects ONE format. Choose the format that best fits your project size and complexity.
286
-
287
- ## Product Analysis File
288
-
289
- After running `/agentful-product`, a `product-analysis.json` file is generated:
290
-
291
- ```bash
292
- .claude/product/
293
- ├── index.md # Your product spec (template)
294
- └── product-analysis.json # Generated analysis (created by /agentful-product)
295
- ```
296
-
297
- **Key points:**
298
- - **Not in templates**: This file doesn't exist in the agentful package itself
299
- - **Generated on demand**: Created when you run `/agentful-product` in your project
300
- - **Purpose**: Analyzes your product spec for completeness, clarity, feasibility, testability, and consistency
301
- - **Scores readiness**: 0-100% score with blocking issues and recommendations
302
- - **Version controlled**: Commit to git to track spec quality improvements over time
303
-
304
- **Example content:**
305
- ```json
306
- {
307
- "version": "1.0",
308
- "timestamp": "2026-01-20T00:00:00Z",
309
- "readiness_score": 75,
310
- "dimensions": {
311
- "completeness": { "score": 85 },
312
- "clarity": { "score": 90 }
313
- },
314
- "blocking_issues": [],
315
- "can_start_development": true
316
- }
317
- ```
318
-
319
- ## Summary
320
-
321
- | Format | Best For | Tracking | File Structure |
322
- |--------|----------|----------|----------------|
323
- | Flat (.claude/product/index.md) | Small projects, MVPs | Feature level | Single file |
324
- | Hierarchical | Large projects, teams | Subtask/feature/domain level | Multiple files, domain folders |
325
-
326
- Choose the format that matches your project needs. The system will auto-detect and adapt!
@@ -1,271 +0,0 @@
1
- ---
2
- name: validation
3
- description: Runs production readiness validation checks. Includes TypeScript, linting, tests, coverage, security, and dead code detection.
4
- model: sonnet
5
- tools: Read, Write, Edit, Glob, Grep, Bash
6
- ---
7
-
8
- # Validation Skill
9
-
10
- This skill runs all production readiness validation checks.
11
-
12
- ## Check Sequence
13
-
14
- Run all checks in order. Don't skip any.
15
-
16
- ### 1. TypeScript Type Check
17
-
18
- ```bash
19
- npx tsc --noEmit
20
- ```
21
-
22
- **Exit code**: 0 = pass, non-zero = fail
23
-
24
- **Report**:
25
- ```json
26
- {
27
- "name": "typescript",
28
- "passed": true,
29
- "error_count": 0,
30
- "files_checked": 47
31
- }
32
- ```
33
-
34
- ### 2. Lint Check
35
-
36
- ```bash
37
- npm run lint 2>&1 || true
38
- ```
39
-
40
- **Exit code**: 0 = pass, non-zero = fail
41
-
42
- **Report**:
43
- ```json
44
- {
45
- "name": "lint",
46
- "passed": true,
47
- "error_count": 0,
48
- "warning_count": 3
49
- }
50
- ```
51
-
52
- ### 3. Dead Code Detection
53
-
54
- Try multiple tools in order:
55
-
56
- ```bash
57
- # Try knip first
58
- npx knip --reporter json 2>/dev/null && exit 0
59
-
60
- # Fall back to ts-prune
61
- npx ts-prune 2>/dev/null && exit 0
62
-
63
- # Manual grep check as fallback
64
- grep -r "export.*function\|export.*class\|export.*const\|export.*interface\|export.*type" \
65
- src/ --include="*.ts" --include="*.tsx" -h | \
66
- while IFS=: read -r file line; do
67
- export_name=$(echo "$line" | grep -oE "(export|const|function|class|interface|type)\s+\w+" | tail -1 | awk '{print $2}');
68
- if [ -n "$export_name" ]; then
69
- usage_count=$(grep -r "$export_name" src/ --include="*.ts" --include="*.tsx" | grep -v "export.*$export_name" | wc -l);
70
- if [ "$usage_count" -eq 0 ]; then
71
- echo "$file: Unused export '$export_name'";
72
- fi;
73
- fi;
74
- done
75
- ```
76
-
77
- **Report**:
78
- ```json
79
- {
80
- "name": "dead_code",
81
- "passed": false,
82
- "issues": [
83
- {
84
- "type": "unused_export",
85
- "file": "src/utils/date.ts",
86
- "name": "formatDate"
87
- },
88
- {
89
- "type": "unused_file",
90
- "file": "src/components/OldWidget.tsx"
91
- }
92
- ]
93
- }
94
- ```
95
-
96
- ### 4. Test Check
97
-
98
- ```bash
99
- npm test 2>&1 || true
100
- ```
101
-
102
- **Exit code**: 0 = pass
103
-
104
- **Report**:
105
- ```json
106
- {
107
- "name": "tests",
108
- "passed": true,
109
- "test_count": 47,
110
- "failed": 0,
111
- "skipped": 2
112
- }
113
- ```
114
-
115
- ### 5. Coverage Check
116
-
117
- ```bash
118
- npm test -- --coverage --reporter=json 2>&1 || true
119
- ```
120
-
121
- **Check threshold**: 80%
122
-
123
- **Report**:
124
- ```json
125
- {
126
- "name": "coverage",
127
- "passed": false,
128
- "actual": 72.3,
129
- "required": 80,
130
- "diff": -7.7,
131
- "by_file": {
132
- "src/services/auth.service.ts": 65,
133
- "src/components/Button.tsx": 100,
134
- "src/utils/format.ts": 50
135
- }
136
- }
137
- ```
138
-
139
- ### 6. Security Check
140
-
141
- ```bash
142
- # npm audit
143
- npm audit --production --json 2>/dev/null || true
144
-
145
- # Check for secrets
146
- grep -rE "(password|secret|token|api_key|apikey)\s*[:=]\s*['\"][^'\"]{10,}['\"]" \
147
- src/ --include="*.ts" --include="*.tsx" --include="*.js" --include="*.jsx" -n || true
148
-
149
- # Check for console.log
150
- grep -rn "console\.(log|debug|warn)" \
151
- src/ --include="*.ts" --include="*.tsx" | head -20 || true
152
-
153
- # Check for @ts-ignore
154
- grep -rn "@ts-ignore\|@ts-nocheck" \
155
- src/ --include="*.ts" --include="*.tsx" || true
156
- ```
157
-
158
- **Report**:
159
- ```json
160
- {
161
- "name": "security",
162
- "passed": false,
163
- "vulnerabilities": {
164
- "critical": 0,
165
- "high": 0,
166
- "moderate": 2,
167
- "low": 5
168
- },
169
- "issues": [
170
- {
171
- "type": "console_log",
172
- "file": "src/auth/login.ts",
173
- "line": 45
174
- },
175
- {
176
- "type": "hardcoded_secret",
177
- "file": "src/config/api.ts",
178
- "line": 12
179
- }
180
- ]
181
- }
182
- ```
183
-
184
- ## Final Report
185
-
186
- ```json
187
- {
188
- "timestamp": "2026-01-18T00:00:00Z",
189
- "overall": "failed",
190
- "checks": {
191
- "typescript": { "passed": true },
192
- "lint": { "passed": true },
193
- "dead_code": { "passed": false, "issues": 3 },
194
- "tests": { "passed": true },
195
- "coverage": { "passed": false, "actual": 72 },
196
- "security": { "passed": false, "issues": 2 }
197
- },
198
- "must_fix": [
199
- "Remove unused export: formatDate in src/utils/date.ts",
200
- "Delete unused file: src/components/OldWidget.tsx",
201
- "Remove unused dependency: lodash",
202
- "Add tests to reach 80% coverage",
203
- "Remove console.log from src/auth/login.ts:45",
204
- "Fix hardcoded secret in src/config/api.ts:12"
205
- ],
206
- "can_ignore": [
207
- "npm audit moderate vulnerabilities (transitive dependencies)"
208
- ]
209
- }
210
- ```
211
-
212
- ## Save Report
213
-
214
- ```bash
215
- # Write to .agentful/last-validation.json
216
- cat > .agentful/last-validation.json << EOF
217
- {...report json...}
218
- EOF
219
- ```
220
-
221
- ## Gates Configuration
222
-
223
- Update `.agentful/completion.json`:
224
-
225
- ```json
226
- {
227
- "gates": {
228
- "tests_passing": true,
229
- "no_type_errors": true,
230
- "no_dead_code": false,
231
- "coverage_80": false,
232
- "security_clean": false
233
- }
234
- }
235
- ```
236
-
237
- ## Quick Validation
238
-
239
- For faster feedback, skip to specific checks:
240
-
241
- ```bash
242
- # Type check only
243
- npx tsc --noEmit
244
-
245
- # Tests only
246
- npm test
247
-
248
- # Coverage only
249
- npm test -- --coverage
250
- ```
251
-
252
- ## Continuous Integration
253
-
254
- In CI/CD pipeline:
255
-
256
- ```bash
257
- # Run all checks, exit on failure
258
- set -e
259
-
260
- npx tsc --noEmit
261
- npm run lint
262
- npm test
263
- npm test -- --coverage
264
-
265
- # Fail if coverage below 80%
266
- COVERAGE=$(npm test -- --coverage --reporter=json | jq '.total.lines.pct')
267
- if (( $(echo "$COVERAGE < 80" | bc -l) )); then
268
- echo "Coverage $COVERAGE% is below 80% threshold"
269
- exit 1
270
- fi
271
- ```
@@ -1,57 +0,0 @@
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
@@ -1,36 +0,0 @@
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: npx @itz4blitz/agentful init"
12
- exit 0
13
- fi
14
-
15
- # Check if this is a fresh init (no architecture.json means analysis hasn't run)
16
- if [ ! -f ".agentful/architecture.json" ]; then
17
- echo "Agentful initialized but not analyzed."
18
- echo ""
19
- echo "Run /agentful-generate to:"
20
- echo " - Detect your tech stack"
21
- echo " - Discover business domains"
22
- echo " - Generate specialized agents and skills"
23
- exit 0
24
- fi
25
-
26
- # Check for generated agents
27
- AGENT_COUNT=$(find .claude/agents -name "*.md" 2>/dev/null | wc -l | tr -d ' ')
28
- SKILL_COUNT=$(find .claude/skills -name "SKILL.md" 2>/dev/null | wc -l | tr -d ' ')
29
-
30
- if [ "$AGENT_COUNT" -lt 3 ] || [ "$SKILL_COUNT" -lt 1 ]; then
31
- echo "Agentful ready. Consider running /agentful-generate to generate more agents/skills."
32
- exit 0
33
- fi
34
-
35
- echo "Agentful ready."
36
- exit 0
File without changes