micro--go-micro
1c8d8f0ff6
`micro loop init` writes an autonomous improvement loop into any repository —
the same planner/builder/triage loop that maintains go-micro, generalized:
- planner (loop-planner.yml): keeps a ranked queue in .github/loop/PRIORITIES.md
- builder (loop-builder.yml): builds the top open item as a single-concern PR,
auto-merged on green CI
- triage (loop-triage.yml): turns CI failures into scoped fix issues
plus .github/loop/NORTH_STAR.md (direction) and PRIORITIES.md (queue).
The agent adapter is mention-based, not hardcoded to Codex: `--agent @codex`
(or any @mention agent that responds on an issue and can run gh), `--token-secret`,
`--branch`, `--ci-workflow`, and cron flags are the whole config-vs-core boundary.
Templates use << >> delimiters so GitHub Actions' own ${{ }} expressions pass
through untouched. `micro loop verify` checks the wiring and flags the two things
the CLI can't: the token secret and branch protection (the green-CI gate).
Built inside go-micro with the config/core split already drawn, so the workflows
can later be extracted to a standalone reusable-workflows repo without a rewrite.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CmdEY7pYmV5zzwCjNJ4ykL
49 行
2.9 KiB
Cheetah
49 行
2.9 KiB
Cheetah
name: "Loop: Planner"
|
|
|
|
# Generated by `micro loop init`. Part of an autonomous improvement loop:
|
|
# a PLANNER (this file) keeps a ranked queue, a BUILDER builds the top item,
|
|
# and CI + a TRIAGE pass are the evaluator. The loop dispatches a coding agent
|
|
# by @mention on a fresh tracking issue each run.
|
|
#
|
|
# Gated on the << .TokenSecret >> secret: the agent ignores @mentions from the
|
|
# github-actions bot, so the dispatch must post as a real user (a PAT). Until
|
|
# that secret is set the workflow runs but no-ops. Direction lives in
|
|
# .github/loop/NORTH_STAR.md; the ranked queue in .github/loop/PRIORITIES.md.
|
|
|
|
on:
|
|
workflow_dispatch: {}
|
|
schedule:
|
|
- cron: "<< .PlannerCron >>"
|
|
|
|
permissions:
|
|
issues: write
|
|
|
|
concurrency:
|
|
group: loop-planner
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
dispatch:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Open a planning issue and dispatch the agent
|
|
env:
|
|
GH_TOKEN: ${{ secrets.<< .TokenSecret >> || github.token }}
|
|
HAS_TOKEN: ${{ secrets.<< .TokenSecret >> != '' }}
|
|
REPO: ${{ github.repository }}
|
|
RUN_NUMBER: ${{ github.run_number }}
|
|
run: |
|
|
if [ "$HAS_TOKEN" != "true" ]; then
|
|
echo "<< .TokenSecret >> is not set — skipping."
|
|
echo "The agent ignores @mentions from the github-actions bot, so a"
|
|
echo "user PAT is required. Add a << .TokenSecret >> secret to activate."
|
|
exit 0
|
|
fi
|
|
ISSUE_URL=$(gh issue create --repo "$REPO" \
|
|
--title "Loop: planning review #$RUN_NUMBER" \
|
|
--body "Autonomous planning pass. Direction: .github/loop/NORTH_STAR.md. Queue: .github/loop/PRIORITIES.md.")
|
|
ISSUE_NUM="${ISSUE_URL##*/}"
|
|
echo "Opened issue #$ISSUE_NUM — dispatching the planner."
|
|
gh issue comment "$ISSUE_NUM" --repo "$REPO" --body \
|
|
"<< .AgentMention >> Act as the planner for this repository. (1) Read .github/loop/NORTH_STAR.md for direction, then assess current state — recently merged PRs and open issues — so the queue reflects reality (drop done items, don't re-queue in-flight work). (2) Maintain a SINGLE ranked queue in .github/loop/PRIORITIES.md, highest-value first, each item linking a scoped, CI-verifiable issue (#N). For any prioritized gap with no issue, file one: \`gh issue create --title \"<scoped task>\" --body \"<goal, scope, acceptance criteria>\"\`. (3) If the ranking actually changed, open ONE PR for PRIORITIES.md: \`git switch -c loop/planner-$ISSUE_NUM\`, \`git push -u origin loop/planner-$ISSUE_NUM\`, \`gh pr create --base << .DefaultBranch >> --title \"<title>\" --body \"<summary, Closes #$ISSUE_NUM>\"\`, then \`gh pr merge --squash --auto --delete-branch\`. If the queue is already accurate, just close this issue (\`gh issue close $ISSUE_NUM\`). Do NOT make breaking or architectural changes yourself — surface those as notes for a human. Open the PR yourself from the shell with gh; do not use a make_pr tool."
|