- PROMPT.md references best-practices/ files instead of inlining all knowledge
- best-practices/{memory,disk,ci,dev-agent,git}.md — loaded on demand by claude
- All alerts go to claude -p. Claude decides what to fix and what to escalate.
- update-prompt.sh targets specific best-practices files for self-learning
1.7 KiB
1.7 KiB
Dev-Agent Best Practices
Architecture
dev-poll.sh(cron */10) → finds ready backlog issues → spawnsdev-agent.shdev-agent.shusesclaude -pfor implementation, runs in git worktree- Lock file:
/tmp/dev-agent.lock(contains PID) - Status file:
/tmp/dev-agent-status - Worktrees:
/tmp/harb-worktree-<issue-number>/
Safe Fixes
- Remove stale lock:
rm -f /tmp/dev-agent.lock(only if PID is dead) - Kill stuck agent:
kill <pid>then clean lock - Restart on derailed PR:
bash ${FACTORY_ROOT}/dev/dev-agent.sh <issue-number> & - Clean worktree:
cd /home/debian/harb && git worktree remove /tmp/harb-worktree-<N> --force - Remove
in-progresslabel if agent died without cleanup:codeberg_api DELETE "/issues/<N>/labels/in-progress"
Dangerous (escalate)
- Restarting agent on an issue that has an open PR with review changes — may lose context
- Anything that modifies the PR branch history
- Closing PRs or issues
Known Issues
claude -p -c(continue) fails if session was compacted — falls back to fresh-p- CI_FIX_COUNT is now reset on CI pass (fixed 2026-03-12), so each review phase gets fresh CI fix budget
- Worktree creation fails if main repo has stale rebase — auto-heals now
- Large text in jq
--argcan break — write to file first $([ "$VAR" = true ] && echo "...")crashes underset -euo pipefail
Lessons Learned
- Agents don't have memory between tasks — full context must be in the prompt
- Prior art injection (closed PR diffs) prevents rework
- Feature issues MUST list affected e2e test files
- CI fix loop is essential — first attempt rarely works
- CLAUDE_TIMEOUT=7200 (2h) is needed for complex issues