@agentic15.com/agentic15-claude-zen 3.3.0 → 4.0.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
|
@@ -23,28 +23,83 @@ npx "@agentic15.com/agentic15-claude-zen" my-project
|
|
|
23
23
|
cd my-project
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
**Step 3:
|
|
26
|
+
**Step 3: Initialize Git and Link to GitHub**
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
```bash
|
|
29
|
+
# Initialize git (if not already done)
|
|
30
|
+
git init
|
|
31
|
+
git add .
|
|
32
|
+
git commit -m "Initial commit"
|
|
33
|
+
|
|
34
|
+
# Create GitHub repository and link it
|
|
35
|
+
gh repo create OWNER/REPO --public # or --private
|
|
36
|
+
git remote add origin https://github.com/OWNER/REPO.git
|
|
37
|
+
git push -u origin main
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Replace `OWNER/REPO` with your GitHub username and repository name (e.g., `myusername/my-project`).
|
|
41
|
+
|
|
42
|
+
> **REQUIRED**: This step is mandatory. The framework needs a GitHub remote to create issues and pull requests.
|
|
29
43
|
|
|
30
44
|
**Step 4: Configure Repository Settings (Recommended)**
|
|
45
|
+
|
|
46
|
+
**For Bash/Mac/Linux:**
|
|
31
47
|
```bash
|
|
32
48
|
# Prevent direct pushes to main - require PRs for all changes
|
|
49
|
+
cat > /tmp/protection.json << 'EOF'
|
|
50
|
+
{
|
|
51
|
+
"required_pull_request_reviews": {
|
|
52
|
+
"required_approving_review_count": 0
|
|
53
|
+
},
|
|
54
|
+
"enforce_admins": true,
|
|
55
|
+
"allow_force_pushes": false,
|
|
56
|
+
"allow_deletions": false,
|
|
57
|
+
"required_status_checks": null,
|
|
58
|
+
"restrictions": null
|
|
59
|
+
}
|
|
60
|
+
EOF
|
|
61
|
+
|
|
33
62
|
gh api repos/OWNER/REPO/branches/main/protection -X PUT \
|
|
34
63
|
-H "Accept: application/vnd.github+json" \
|
|
35
|
-
|
|
36
|
-
-f enforce_admins=false \
|
|
37
|
-
-f allow_force_pushes=false \
|
|
38
|
-
-f allow_deletions=false
|
|
64
|
+
--input /tmp/protection.json
|
|
39
65
|
|
|
40
66
|
# Auto-delete branches after PR merge
|
|
41
67
|
gh api repos/OWNER/REPO -X PATCH \
|
|
42
68
|
-H "Accept: application/vnd.github+json" \
|
|
43
69
|
-f delete_branch_on_merge=true
|
|
44
70
|
```
|
|
71
|
+
|
|
72
|
+
**For PowerShell (Windows):**
|
|
73
|
+
```powershell
|
|
74
|
+
# Prevent direct pushes to main - require PRs for all changes
|
|
75
|
+
$body = @"
|
|
76
|
+
{
|
|
77
|
+
"required_pull_request_reviews": {
|
|
78
|
+
"required_approving_review_count": 0
|
|
79
|
+
},
|
|
80
|
+
"enforce_admins": true,
|
|
81
|
+
"allow_force_pushes": false,
|
|
82
|
+
"allow_deletions": false,
|
|
83
|
+
"required_status_checks": null,
|
|
84
|
+
"restrictions": null
|
|
85
|
+
}
|
|
86
|
+
"@
|
|
87
|
+
|
|
88
|
+
echo $body | gh api repos/OWNER/REPO/branches/main/protection -X PUT -H "Accept: application/vnd.github+json" --input -
|
|
89
|
+
|
|
90
|
+
# Auto-delete branches after PR merge
|
|
91
|
+
gh api repos/OWNER/REPO -X PATCH -H "Accept: application/vnd.github+json" -f delete_branch_on_merge=true
|
|
92
|
+
```
|
|
93
|
+
|
|
45
94
|
Replace `OWNER/REPO` with your GitHub username and repository name.
|
|
46
95
|
|
|
47
|
-
**Step 5:
|
|
96
|
+
**Step 5: Launch Claude Code**
|
|
97
|
+
|
|
98
|
+
Start Claude Code CLI from inside the `my-project` directory. Claude Code MUST be running from inside your project directory to access the framework files.
|
|
99
|
+
|
|
100
|
+
> **IMPORTANT**: Always launch Claude Code from inside your project directory, not from the parent directory.
|
|
101
|
+
|
|
102
|
+
**Step 6: Use Framework Commands**
|
|
48
103
|
```bash
|
|
49
104
|
npx agentic15 auth # One-time GitHub setup
|
|
50
105
|
npx agentic15 plan # Enter interactive mode
|
|
@@ -56,9 +111,7 @@ npx agentic15 task next # Start first task
|
|
|
56
111
|
npx agentic15 commit # Test, commit, push, PR
|
|
57
112
|
```
|
|
58
113
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
**Step 6: Clean Up Local Branches**
|
|
114
|
+
**Step 7: Clean Up Local Branches**
|
|
62
115
|
```bash
|
|
63
116
|
# If auto-delete is enabled, only clean up local branches
|
|
64
117
|
git branch -d feature/task-001
|
package/bin/agentic15.js
CHANGED
package/package.json
CHANGED
package/src/cli/TaskCommand.js
CHANGED
|
@@ -28,6 +28,9 @@ export class TaskCommand {
|
|
|
28
28
|
process.exit(1);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
// Verify git remote is configured
|
|
32
|
+
this.validateGitRemote();
|
|
33
|
+
|
|
31
34
|
// Load task tracker
|
|
32
35
|
const tracker = this.loadTracker();
|
|
33
36
|
const task = tracker.taskFiles.find(t => t.id === taskId);
|
|
@@ -248,4 +251,36 @@ export class TaskCommand {
|
|
|
248
251
|
const planId = readFileSync(activePlanPath, 'utf-8').trim();
|
|
249
252
|
return join(process.cwd(), '.claude', 'plans', planId, 'tasks', `${taskId}.json`);
|
|
250
253
|
}
|
|
254
|
+
|
|
255
|
+
static validateGitRemote() {
|
|
256
|
+
try {
|
|
257
|
+
// Check if git remote origin exists
|
|
258
|
+
const remote = execSync('git remote get-url origin', { encoding: 'utf-8', stdio: 'pipe' }).trim();
|
|
259
|
+
|
|
260
|
+
if (!remote || remote.length === 0) {
|
|
261
|
+
throw new Error('No remote URL');
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// Validate it's a GitHub URL
|
|
265
|
+
if (!remote.includes('github.com')) {
|
|
266
|
+
console.log('\n⚠️ Warning: Remote is not a GitHub repository');
|
|
267
|
+
console.log(` Remote URL: ${remote}`);
|
|
268
|
+
console.log(' GitHub integration features may not work.\n');
|
|
269
|
+
}
|
|
270
|
+
} catch (error) {
|
|
271
|
+
console.log('\n❌ Git remote "origin" is not configured');
|
|
272
|
+
console.log('\n Before starting tasks, you must link your project to a GitHub repository:');
|
|
273
|
+
console.log('\n 1. Create a GitHub repository:');
|
|
274
|
+
console.log(' gh repo create OWNER/REPO --public (or --private)');
|
|
275
|
+
console.log('\n 2. Link it to your local project:');
|
|
276
|
+
console.log(' git remote add origin https://github.com/OWNER/REPO.git');
|
|
277
|
+
console.log('\n 3. Push your initial code:');
|
|
278
|
+
console.log(' git add .');
|
|
279
|
+
console.log(' git commit -m "Initial commit"');
|
|
280
|
+
console.log(' git push -u origin main');
|
|
281
|
+
console.log('\n 4. Then start your task:');
|
|
282
|
+
console.log(' npx agentic15 task next\n');
|
|
283
|
+
process.exit(1);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
251
286
|
}
|
|
@@ -46,7 +46,7 @@ async function main() {
|
|
|
46
46
|
|
|
47
47
|
if (!taskId) {
|
|
48
48
|
console.error('\n❌ ERROR: Task ID required');
|
|
49
|
-
console.error('Usage:
|
|
49
|
+
console.error('Usage: Internal - called by npx agentic15 commit\n');
|
|
50
50
|
process.exit(1);
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -54,7 +54,7 @@ async function main() {
|
|
|
54
54
|
const activePlanFile = '.claude/ACTIVE-PLAN';
|
|
55
55
|
if (!fs.existsSync(activePlanFile)) {
|
|
56
56
|
console.error('\n❌ ERROR: No active plan found');
|
|
57
|
-
console.error('Set active plan first:
|
|
57
|
+
console.error('Set active plan first: npx agentic15 plan\n');
|
|
58
58
|
process.exit(1);
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -67,7 +67,7 @@ async function main() {
|
|
|
67
67
|
if (!fs.existsSync(trackerFile)) {
|
|
68
68
|
console.error('\n❌ ERROR: Task tracker not found');
|
|
69
69
|
console.error(`Plan: ${activePlan}`);
|
|
70
|
-
console.error('Initialize first:
|
|
70
|
+
console.error('Initialize first: npx agentic15 plan\n');
|
|
71
71
|
process.exit(1);
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -208,7 +208,7 @@ async function main() {
|
|
|
208
208
|
console.log('');
|
|
209
209
|
console.log('📝 Next task:');
|
|
210
210
|
console.log(` ${nextPendingTask.id}: ${nextPendingTask.title}`);
|
|
211
|
-
console.log(` Run:
|
|
211
|
+
console.log(` Run: npx agentic15 task next`);
|
|
212
212
|
} else {
|
|
213
213
|
console.log('');
|
|
214
214
|
console.log('🎉 All tasks completed!');
|
|
@@ -67,7 +67,7 @@ if (activePlan && tracker) {
|
|
|
67
67
|
}
|
|
68
68
|
} else {
|
|
69
69
|
log('\n ⚠️ No active task - start one:', 'yellow');
|
|
70
|
-
log('
|
|
70
|
+
log(' npx agentic15 task next', 'yellow');
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
// Show progress
|
|
@@ -79,11 +79,9 @@ if (activePlan && tracker) {
|
|
|
79
79
|
} else {
|
|
80
80
|
log('❌ NO ACTIVE PROJECT PLAN', 'red');
|
|
81
81
|
log('\n You MUST work within the agentic15-claude-zen framework.', 'yellow');
|
|
82
|
-
log('
|
|
83
|
-
log('
|
|
84
|
-
log('
|
|
85
|
-
log(' 3. npm run plan:init', 'yellow');
|
|
86
|
-
log(' 4. npm run task:next\n', 'yellow');
|
|
82
|
+
log(' Initialize the plan and start execution:', 'yellow');
|
|
83
|
+
log(' npx agentic15 plan', 'yellow');
|
|
84
|
+
log(' npx agentic15 task next\n', 'yellow');
|
|
87
85
|
}
|
|
88
86
|
|
|
89
87
|
console.log('─'.repeat(70));
|
|
@@ -108,11 +106,11 @@ log(' ./node_modules/.agentic15-claude-zen/ # Bundled scripts & hooks', 'yell
|
|
|
108
106
|
console.log('\n' + '─'.repeat(70));
|
|
109
107
|
log('📋 AVAILABLE COMMANDS:', 'bold');
|
|
110
108
|
console.log('─'.repeat(70));
|
|
111
|
-
log('
|
|
112
|
-
log('
|
|
113
|
-
log('
|
|
114
|
-
log('
|
|
115
|
-
log('
|
|
109
|
+
log(' npx agentic15 plan # Generate and lock plan', 'cyan');
|
|
110
|
+
log(' npx agentic15 task next # Start next task', 'cyan');
|
|
111
|
+
log(' npx agentic15 status # View progress', 'cyan');
|
|
112
|
+
log(' npx agentic15 commit # Test, commit, push, PR', 'cyan');
|
|
113
|
+
log(' npx agentic15 visual-test <url> # Capture UI screenshots', 'cyan');
|
|
116
114
|
|
|
117
115
|
console.log('\n' + '─'.repeat(70));
|
|
118
116
|
log('⚠️ ENFORCEMENT ACTIVE:', 'bold');
|
|
@@ -53,7 +53,7 @@ async function main() {
|
|
|
53
53
|
|
|
54
54
|
if (!taskId) {
|
|
55
55
|
console.error('\n❌ ERROR: Task ID required');
|
|
56
|
-
console.error('Usage:
|
|
56
|
+
console.error('Usage: npx agentic15 task start TASK-001\n');
|
|
57
57
|
process.exit(1);
|
|
58
58
|
}
|
|
59
59
|
|
|
@@ -61,7 +61,7 @@ async function main() {
|
|
|
61
61
|
const activePlanFile = '.claude/ACTIVE-PLAN';
|
|
62
62
|
if (!fs.existsSync(activePlanFile)) {
|
|
63
63
|
console.error('\n❌ ERROR: No active plan found');
|
|
64
|
-
console.error('Set active plan first:
|
|
64
|
+
console.error('Set active plan first: npx agentic15 plan\n');
|
|
65
65
|
process.exit(1);
|
|
66
66
|
}
|
|
67
67
|
|
|
@@ -74,7 +74,7 @@ async function main() {
|
|
|
74
74
|
if (!fs.existsSync(trackerFile)) {
|
|
75
75
|
console.error('\n❌ ERROR: Task tracker not found');
|
|
76
76
|
console.error(`Plan: ${activePlan}`);
|
|
77
|
-
console.error('Initialize first:
|
|
77
|
+
console.error('Initialize first: npx agentic15 plan\n');
|
|
78
78
|
process.exit(1);
|
|
79
79
|
}
|
|
80
80
|
|
|
@@ -218,11 +218,9 @@ async function main() {
|
|
|
218
218
|
|
|
219
219
|
console.log(`\n📂 Task file: ${taskFile}`);
|
|
220
220
|
console.log('\n📝 WORKFLOW:');
|
|
221
|
-
console.log(' 1.
|
|
222
|
-
console.log(' 2.
|
|
223
|
-
console.log(`
|
|
224
|
-
console.log(' 3. When finished:');
|
|
225
|
-
console.log(` npm run task:done ${taskId}`);
|
|
221
|
+
console.log(' 1. Implement the task requirements');
|
|
222
|
+
console.log(' 2. When finished, commit and create PR:');
|
|
223
|
+
console.log(` npx agentic15 commit`);
|
|
226
224
|
|
|
227
225
|
process.exit(0);
|
|
228
226
|
}
|