fix: Notes for BOOTSTRAP.md (#526)
Add Claude Code global settings section (permissions + skipDangerousModePermissionPrompt only, no hooks, seed ~/.claude.json), file ownership requirements (debian:debian), and cross-box debugging rule (diff configs first) to BOOTSTRAP.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ac51497489
commit
7544f00cd2
1 changed files with 47 additions and 5 deletions
52
BOOTSTRAP.md
52
BOOTSTRAP.md
|
|
@ -52,7 +52,48 @@ WOODPECKER_DB_NAME=woodpecker
|
||||||
CLAUDE_TIMEOUT=7200 # seconds per Claude invocation
|
CLAUDE_TIMEOUT=7200 # seconds per Claude invocation
|
||||||
```
|
```
|
||||||
|
|
||||||
## 2. Prepare the Target Repo
|
## 2. Claude Code Global Settings
|
||||||
|
|
||||||
|
Configure `~/.claude/settings.json` with **only** permissions and `skipDangerousModePermissionPrompt`. Do not add hooks to the global settings — `agent-session.sh` injects per-worktree hooks automatically.
|
||||||
|
|
||||||
|
Match the configuration from harb-staging exactly. The file should contain only permission grants and the dangerous-mode flag:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"permissions": {
|
||||||
|
"allow": [
|
||||||
|
"..."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"skipDangerousModePermissionPrompt": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Seed `~/.claude.json`
|
||||||
|
|
||||||
|
Run `claude --dangerously-skip-permissions` once interactively to create `~/.claude.json`. This file must exist before cron-driven agents can run.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude --dangerously-skip-permissions
|
||||||
|
# Exit after it initializes successfully
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. File Ownership
|
||||||
|
|
||||||
|
Everything under `/home/debian` must be owned by `debian:debian`. Root-owned files cause permission errors when agents run as the `debian` user.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chown -R debian:debian /home/debian/harb /home/debian/dark-factory
|
||||||
|
```
|
||||||
|
|
||||||
|
Verify no root-owned files exist in agent temp directories:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# These should return nothing
|
||||||
|
find /tmp/dev-* /tmp/harb-* /tmp/review-* -not -user debian 2>/dev/null
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. Prepare the Target Repo
|
||||||
|
|
||||||
### Required: CI pipeline
|
### Required: CI pipeline
|
||||||
|
|
||||||
|
|
@ -136,7 +177,7 @@ entire repo as "new", generating a noisy first-run diff.
|
||||||
|
|
||||||
See `formulas/run-planner.toml` (agents-update step) for the full AGENTS.md conventions.
|
See `formulas/run-planner.toml` (agents-update step) for the full AGENTS.md conventions.
|
||||||
|
|
||||||
## 3. Write Good Issues
|
## 5. Write Good Issues
|
||||||
|
|
||||||
Dev-agent works best with issues that have:
|
Dev-agent works best with issues that have:
|
||||||
|
|
||||||
|
|
@ -151,7 +192,7 @@ Dev-agent works best with issues that have:
|
||||||
|
|
||||||
Dev-agent checks that all referenced issues are closed (= merged) before starting work. If any are open, the issue is skipped and checked again next cycle.
|
Dev-agent checks that all referenced issues are closed (= merged) before starting work. If any are open, the issue is skipped and checked again next cycle.
|
||||||
|
|
||||||
## 4. Install Cron
|
## 6. Install Cron
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
crontab -e
|
crontab -e
|
||||||
|
|
@ -210,7 +251,7 @@ FACTORY_ROOT=/home/you/disinto
|
||||||
|
|
||||||
The staggered offsets prevent agents from competing for resources. Each project gets its own lock file (`/tmp/dev-agent-{name}.lock`) derived from the `name` field in its TOML, so concurrent runs across projects are safe.
|
The staggered offsets prevent agents from competing for resources. Each project gets its own lock file (`/tmp/dev-agent-{name}.lock`) derived from the `name` field in its TOML, so concurrent runs across projects are safe.
|
||||||
|
|
||||||
## 5. Verify
|
## 7. Verify
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Should complete with "all clear" (no problems to fix)
|
# Should complete with "all clear" (no problems to fix)
|
||||||
|
|
@ -231,7 +272,7 @@ tail -30 dev/dev-agent.log
|
||||||
tail -30 review/review.log
|
tail -30 review/review.log
|
||||||
```
|
```
|
||||||
|
|
||||||
## 6. Optional: Matrix Notifications
|
## 8. Optional: Matrix Notifications
|
||||||
|
|
||||||
If you want real-time notifications and human-in-the-loop escalation:
|
If you want real-time notifications and human-in-the-loop escalation:
|
||||||
|
|
||||||
|
|
@ -292,6 +333,7 @@ Meanwhile:
|
||||||
| Claude not found | `which claude` — must be in PATH. Check `lib/env.sh` adds `~/.local/bin`. |
|
| Claude not found | `which claude` — must be in PATH. Check `lib/env.sh` adds `~/.local/bin`. |
|
||||||
| Merge fails | Branch protection misconfigured? Review bot needs write access to the repo. |
|
| Merge fails | Branch protection misconfigured? Review bot needs write access to the repo. |
|
||||||
| Memory issues | Supervisor auto-heals at <500 MB free. Check `supervisor/supervisor.log` for P0 alerts. |
|
| Memory issues | Supervisor auto-heals at <500 MB free. Check `supervisor/supervisor.log` for P0 alerts. |
|
||||||
|
| Works on one box but not another | Diff configs first (`~/.claude/settings.json`, `.env`, crontab, branch protection). Write code never — config mismatches are the #1 cause of cross-box failures. |
|
||||||
|
|
||||||
### Multi-project common blockers
|
### Multi-project common blockers
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue