agentify — deploy the autonomous-repo feedback loop
Beta. This skill is under active development; the setup flow may
change and a lower-friction "express" onboarding is being explored.
/agentify installs the framework into a target repo: feedback in →
triaged GitHub issue → human-gated fix PR → filer notified. It bundles the
framework as templates, so installing this plugin is grabbing the
framework. The install lands as a PR the repo owner reviews and merges —
the install itself goes through the same human gate the framework runs on.
Where the tooling lives. The scaffolder and templates ship in this
skill's own directory, next to this SKILL.md — agentify-render.sh,
templates/, references/. Substitute that absolute path for
$AGENTIFY_DIR below; the scaffolder resolves its own resources, so any
working directory works.
v0 scope. The full loop ships: triage/intake (email → triaged
issue), comms (filer acks + the fix-gate approval email + verified-reply
routing), fix + release (the coding agent's human-reviewed PR + the
merge→shipped callback), and this deploy flow. The mechanical render is
automated (agentify-render.sh, with a _selftest); the Q&A and the
one-time identity/secret setup stay guided. An update mode (re-render
preserving the adopter's config tweaks) is the natural follow-on — the
render is already idempotent.
What gets scaffolded into the target repo
from $AGENTIFY_DIR/templates/ |
to the target repo |
autonomous-repo.config.yml.tmpl |
autonomous-repo.config.yml (the only file the adopter owns) |
runtime-skill/** |
.claude/skills/autonomous-repo/** |
scripts/*.sh (ticket_card.sh, comms_send.sh, released_markers.sh) |
scripts/*.sh |
workflows/*.yml.tmpl |
.github/workflows/*.yml |
Deploy procedure
- Detect. Read the target repo: its
OWNER/REPO, primary language,
test command, and CI — used to fill the fix-lane verify_setup_script
and sensible defaults.
- Configure. Ask the adopter the config values and export them as the
ANS_* env vars agentify-render.sh reads: ANS_PRODUCT_NAME,
ANS_OWNER, ANS_REPO, ANS_MARKER, ANS_REVIEWER_LOGIN,
ANS_BOT_LOGIN, ANS_SUPPORT_ADDRESS, ANS_FIX_GATE_MODE (hitl
recommended), ANS_APPROVER_ADDRESS, ANS_VERIFY_SETUP_SCRIPT. (The bot
login can be filled later from the checklist; secrets are never gathered
here.)
- Render. Run
"$AGENTIFY_DIR/agentify-render.sh" --to <target-repo-root>. It fills
autonomous-repo.config.yml from the ANS_* answers (failing loudly on
any unfilled placeholder) and scaffolds the runtime skill, the scripts,
and the four workflows into their real paths
(.claude/skills/autonomous-repo/, scripts/,
.github/workflows/*.yml). Re-running updates the scaffolded code but
PRESERVES an existing autonomous-repo.config.yml (your tuned
always_hitl, the filled bot_login) — pass --force only to regenerate
the config. Then tune the rendered config's always_hitl list for the
product's sensitive surfaces, and sanity-check: scripts/*.sh _selftest
all green and the config parses. Optional addons
($AGENTIFY_DIR/templates/addons/)
— e.g. submit-feedback-mcp (a submit_feedback MCP tool that
email-bridges into the support mailbox) — are opted in via
ANS_ADDONS="<name> ..."; the render scaffolds each to tools/<name>/ and
appends its setup to AGENTIFY-ADDON-SETUP.md. Addons are additive; the
loop runs without them.
- Auto-do the safe parts. Create the labels from
labels.* via gh
(feedback, agent-fix, wontfix, feedback-ops, the status:* set).
- Hand off the rest (print, don't do — see
references/setup-checklist.md):
create the GitHub App (bot identity) and set github_app_login in config;
create the e2a support@ agent + an agent-scoped API key; add the repo
secrets (CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY, E2A_API_KEY,
AUTOREPO_APP_ID, AUTOREPO_APP_PRIVATE_KEY); enable Actions; set branch
protection so the fix lane's PRs require review. Hand over the exact
commands/links — never run the auth yourself.
- Open the install as a PR. Branch, commit the scaffolded files, open a
PR titled "agentify: install the autonomous-repo feedback loop" that
summarizes what each file does and links the setup checklist. Do not
merge.
After merge + setup
The lanes activate themselves: each no-ops loudly until its secrets exist,
then starts on the next cron tick. Flip the AUTOREPO_LANES_PAUSED repo
variable to pause everything. Run the loop interactively any time with the
autonomous-repo skill ("drain the triage queue").
References
(all under $AGENTIFY_DIR/references/)
setup-checklist.md — the one-time identity/secret setup.
adapters.md — the TicketStore / CommsChannel / Intake adapter contracts
and which are implemented.
security-invariants.md — the defaults an adopter must not misconfigure
away.
1---2name: agentify3description: Beta — Deploy the autonomous-repo feedback loop into a GitHub repo. Scaffolds the lane workflows, the runtime skill, and one config file as a reviewed PR, then prints the one-time identity/secret setup checklist. Turns a repo into one that triages incoming feedback into issues and prepares human-gated fix PRs. Use when someone wants to make a repo self-managing / "agentify" it / install the feedback loop.4---56# agentify — deploy the autonomous-repo feedback loop78> **Beta.** This skill is under active development; the setup flow may9> change and a lower-friction "express" onboarding is being explored.1011`/agentify` installs the framework into a target repo: feedback in →12triaged GitHub issue → human-gated fix PR → filer notified. It **bundles the13framework as templates**, so installing this plugin is grabbing the14framework. The install lands as a **PR the repo owner reviews and merges** —15the install itself goes through the same human gate the framework runs on.1617> **Where the tooling lives.** The scaffolder and templates ship in this18> skill's own directory, next to this `SKILL.md` — `agentify-render.sh`,19> `templates/`, `references/`. Substitute that absolute path for20> `$AGENTIFY_DIR` below; the scaffolder resolves its own resources, so any21> working directory works.2223> **v0 scope.** The full loop ships: **triage/intake** (email → triaged24> issue), **comms** (filer acks + the fix-gate approval email + verified-reply25> routing), **fix + release** (the coding agent's human-reviewed PR + the26> merge→shipped callback), and this **deploy** flow. The mechanical render is27> automated (`agentify-render.sh`, with a `_selftest`); the Q&A and the28> one-time identity/secret setup stay guided. An `update` mode (re-render29> preserving the adopter's config tweaks) is the natural follow-on — the30> render is already idempotent.3132## What gets scaffolded into the target repo3334| from `$AGENTIFY_DIR/templates/` | to the target repo |35|---|---|36| `autonomous-repo.config.yml.tmpl` | `autonomous-repo.config.yml` (the only file the adopter owns) |37| `runtime-skill/**` | `.claude/skills/autonomous-repo/**` |38| `scripts/*.sh` (`ticket_card.sh`, `comms_send.sh`, `released_markers.sh`) | `scripts/*.sh` |39| `workflows/*.yml.tmpl` | `.github/workflows/*.yml` |4041## Deploy procedure42431. **Detect.** Read the target repo: its `OWNER/REPO`, primary language,44 test command, and CI — used to fill the fix-lane `verify_setup_script`45 and sensible defaults.462. **Configure.** Ask the adopter the config values and export them as the47 `ANS_*` env vars `agentify-render.sh` reads: `ANS_PRODUCT_NAME`,48 `ANS_OWNER`, `ANS_REPO`, `ANS_MARKER`, `ANS_REVIEWER_LOGIN`,49 `ANS_BOT_LOGIN`, `ANS_SUPPORT_ADDRESS`, `ANS_FIX_GATE_MODE` (`hitl`50 recommended), `ANS_APPROVER_ADDRESS`, `ANS_VERIFY_SETUP_SCRIPT`. (The bot51 login can be filled later from the checklist; secrets are never gathered52 here.)533. **Render.** Run `"$AGENTIFY_DIR/agentify-render.sh" --to <target-repo-root>`. It fills54 `autonomous-repo.config.yml` from the `ANS_*` answers (failing loudly on55 any unfilled placeholder) and scaffolds the runtime skill, the scripts,56 and the four workflows into their real paths57 (`.claude/skills/autonomous-repo/`, `scripts/`,58 `.github/workflows/*.yml`). **Re-running updates the scaffolded code but59 PRESERVES an existing `autonomous-repo.config.yml`** (your tuned60 `always_hitl`, the filled `bot_login`) — pass `--force` only to regenerate61 the config. Then **tune** the rendered config's `always_hitl` list for the62 product's sensitive surfaces, and sanity-check: `scripts/*.sh _selftest`63 all green and the config parses. **Optional addons**64 (`$AGENTIFY_DIR/templates/addons/`)65 — e.g. `submit-feedback-mcp` (a `submit_feedback` MCP tool that66 email-bridges into the support mailbox) — are opted in via67 `ANS_ADDONS="<name> ..."`; the render scaffolds each to `tools/<name>/` and68 appends its setup to `AGENTIFY-ADDON-SETUP.md`. Addons are additive; the69 loop runs without them.704. **Auto-do the safe parts.** Create the labels from `labels.*` via `gh`71 (`feedback`, `agent-fix`, `wontfix`, `feedback-ops`, the `status:*` set).725. **Hand off the rest** (print, don't do — see `references/setup-checklist.md`):73 create the GitHub App (bot identity) and set `github_app_login` in config;74 create the e2a `support@` agent + an agent-scoped API key; add the repo75 secrets (`CLAUDE_CODE_OAUTH_TOKEN` or `ANTHROPIC_API_KEY`, `E2A_API_KEY`,76 `AUTOREPO_APP_ID`, `AUTOREPO_APP_PRIVATE_KEY`); enable Actions; set branch77 protection so the fix lane's PRs require review. **Hand over the exact78 commands/links — never run the auth yourself.**796. **Open the install as a PR.** Branch, commit the scaffolded files, open a80 PR titled "agentify: install the autonomous-repo feedback loop" that81 summarizes what each file does and links the setup checklist. Do not82 merge.8384## After merge + setup8586The lanes activate themselves: each no-ops loudly until its secrets exist,87then starts on the next cron tick. Flip the `AUTOREPO_LANES_PAUSED` repo88variable to pause everything. Run the loop interactively any time with the89`autonomous-repo` skill ("drain the triage queue").9091## References9293(all under `$AGENTIFY_DIR/references/`)9495- `setup-checklist.md` — the one-time identity/secret setup.96- `adapters.md` — the TicketStore / CommsChannel / Intake adapter contracts97 and which are implemented.98- `security-invariants.md` — the defaults an adopter must not misconfigure99 away.