docs: add factory interaction lessons to SKILL.md #156
Labels
No labels
action
backlog
blocked
bug-report
in-progress
prediction/actioned
prediction/dismissed
prediction/unreviewed
priority
tech-debt
underspecified
vision
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: disinto-admin/disinto#156
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
SKILL.md is 268 lines and growing. Adding factory lessons would push it past 350+. Claude Code skills support multi-file packages where SKILL.md is a navigation hub referencing supporting files that are loaded lazily.
What to do
1. Split SKILL.md into three files
Extract from the current SKILL.md:
setup.md— "First-time setup" section (steps 1-7: environment, clone, init, verification, TOML config, mirrors, seed backlog, watch it work)operations.md— "Ongoing operations" section (status checks, CI access, unstick blocked issues, Forgejo UI access)best-practices.md— NEW section with factory interaction patterns (see content below)2. Rewrite SKILL.md as a hub
SKILL.md becomes ~50 lines — overview, when to use each guide, and links:
3. Content for best-practices.md
When the agent fails repeatedly on CI, diagnose externally. The dev agent cannot see CI log output (only pass/fail status). If the same step fails 3+ times, read the logs yourself and put the exact error and fix in the issue body.
Retrying failed issues
Clean up stale branches before retrying. Old branches cause recovery mode which inherits stale code. Close the PR, delete the branch on Forgejo, then relabel to backlog.
After a dependency lands, stale branches miss the fix. If issue B depends on A, and B's PR was created before A merged, B's branch is stale. Close the PR and delete the branch so the agent starts fresh from current main.
Environment gotchas
Alpine/BusyBox differs from Debian. CI and edge containers use Alpine:
grep -P(Perl regex) does not work — usegrep -EUSERvariable is unset — set it explicitly:USER=$(whoami); export USERdocker buildin LXD — download binaries on the host, COPY into imagesThe host repo drifts from Forgejo main. If factory code is bind-mounted, the host checkout goes stale. Pull regularly or use versioned releases.
Vault operations
The human merging a vault PR must be a Forgejo site admin. The dispatcher verifies
is_adminon the merger. Promote your user via the Forgejo CLI or database if needed.Result files cache failures. If a vault action fails, the dispatcher writes
.result.jsonand skips it. To retry: delete the result file inside the edge container.Breaking down large features
Vision issues need structured decomposition. When a feature touches multiple subsystems or has design forks, label it
vision. Break it down by identifying what exists, what can be reused, where the design forks are, and resolve them before filing backlog issues.Prefer gluecode over greenfield. Check if Forgejo API, Woodpecker, Docker, or existing lib/ functions can do the job before building new components.
Max 7 sub-issues per sprint. If a breakdown produces more, split into two sprints.