Repository navigation
Plan: cgwalters-forge/misctool, a Rust CLI of reusable tools that every agent run may target #677
Description
Plan, for the operator's review. Adding the epic label approves it; comments ask for a revision.
A new repository, cgwalters-forge/misctool: one Rust CLI, cgwalters-forge-misctool, collecting small tools and scripts that agents or the controller wrote and that look reusable. It is always an acceptable target for agentic runs, whatever their main repository, so an agent that writes a useful helper can propose it there instead of burying it in a scratch directory or one repository. It is a staging place: tools that prove themselves graduate to their real home (agent-board, agentic-job and so on), and the rest stay here.
Every run's instructions strongly encourage it, in so many words: "Did you write some custom code that may be useful beyond this task? Stick it in misctool."
The contract
From any run's sandbox:
cgwalters-forge-misctool --help # installed in every run, pinned release
cgwalters-forge-misctool gh-pr-checks owner/repo#123And an agent working on, say, agentic-job#NNN that writes a helper worth keeping hands back two outputs: its normal pull request, and a second pull request to misctool adding the helper as a subcommand, with a test.
Design
- Layout: a cargo workspace with a single binary and one module per subcommand. MIT OR Apache-2.0, like agentic-job. CI:
cargo fmt,clippy -D warnings, tests, the workflows check, and the shared review gate. - Admission bar: Rust only (no shell or Python), each subcommand with
--helpand a test. Nothing that holds credentials; tools read the environment's existinggh/GH_TOKENlike any CLI. - Releases: tagged, with static musl binaries and attestations. Runs install a pinned release, the same way agentic-job installs its other tools.
- Always a target: add the repository to
- tracker's
dispatch.toml(both lists) andfix.toml; - the poll's followed repositories in
agent-board.json; - the actions wrapper's bounds.
- tracker's
- A second output repository per run is new: apply today opens pull requests only in the run's one
output-repo. agentic-job needs bounds for a fixed secondary repository forcreate_pull_request(misctool only, its own branch prefix, its own check), so that any run can propose a tool without being able to write anywhere else. - Seed it with tools that already exist as one-off scripts:
- the controller's dispatch wrapper (plan comment plus
agent-board dispatch), though that may belong in agent-board; - the operator-issue diff check;
- the probe that lists an ACP adapter's offered tools.
- the controller's dispatch wrapper (plan comment plus
Slices
- Operator: create the repository (or say the bot may), and add it to the credential broker's run-token policy if that lists repositories, which is the operator's file.
- misctool: skeleton, CI, review gate, release workflow, first subcommand.
- tracker and actions: add it to the dispatch, fix and poll allowlists and the wrapper bounds.
- agentic-job: the secondary output repository for
create_pull_request, bounded to one configured repository. - agenthome: the standing encouragement above in the agent instructions, a skill on how to propose a tool, and the pinned install for every run.
Open for the operator
- Does misctool get the poll's automatic merge like the others, or does a person approve each new tool?
Generated-by: https://github.com/cgwalters/#llms
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsTodo
Activity
cgwalters commentedon Oct 17, 2026
Hmm name is prolly too generic how about namespacing the final binary as cgwalters-forge-misctool git repo name is cgwalters-forge/misctool
[-]Plan: cgwalters-forge/agent-toolbox, a Rust CLI of reusable tools that every agent run may target[/-][+]Plan: cgwalters-forge/misctool, a Rust CLI of reusable tools that every agent run may target[/+]cgwalters-bot commentedon Oct 17, 2026
Renamed: the repository is
cgwalters-forge/misctooland the binary iscgwalters-forge-misctool.Generated-by: https://github.com/cgwalters/#llms
cgwalters-bot commentedon Oct 17, 2026
Coordinator checkpoint; inspect the poll run before resetting a pending operation.
cgwalters-bot commentedon Oct 17, 2026
Plan for the approved epic. Eight sub-issues, ordered only by Priority.
cgwalters-forge/misctooldoes not exist yet and is outside the plan's repositories, so the slices that need it are tracker issues without a job plan. They get plans after the operator creates the repository and it is added toschedule.repositories.dispatch.toml,fix.toml,schedule.repositories). This only adds a name, so it does nothing until the repository exists. The poll'sfollowstays separate, as agenthome's does, until misctool has a review workflow.Unclear: whether the actions wrapper keeps a repository list of its own. The tracker bounds brief asks the run to check
cgwalters-forge/actionsand report what it finds rather than guess. Also unclear: whether the operator's run-token policy lists repositories at all.Generated-by: https://github.com/cgwalters/#llms
cgwalters-bot commentedon Oct 17, 2026
2026-10-17T04:29:10.659886448Z: Applied.
90 remaining items
cgwalters-bot commentedon Oct 25, 2026
Applied this epic plan at 2026-10-25T21:04:08.391435589Z.
cgwalters-bot commentedon Oct 26, 2026
The board pass asks a triage run to plan this epic.
Generated-by: https://github.com/cgwalters/#llms
cgwalters-bot commentedon Oct 26, 2026
Dispatched the plan in #677 (comment): run.
cgwalters-bot commentedon Oct 26, 2026
Plan: no new slices. One rescope, for actions#62. The secondary output is now on agentic-job's
main, but it needs a release, and that release should wait for the credential scrub.agentic-job#1944 closed through #1986, merged as
8fb6775at 22:15Z on 25 Oct. That merge lifts the admission refusal and calls the pass fromapply.yml, so the gap the last plan flagged is closed. It also adds the guide, the docs and thesecondary.sh/secondary-refused.she2e scenarios. That finishes the agentic-job feature, apart from the scrub.What still blocks the rest:
rustjob'scargo fmtcheck, on thefoldclosure ingit.rs(log). Its fix round failed in policy with "an agent run needs a task", before any agent ran. That is a dispatch problem outside this epic. The poll then labelled #1985needs-human. Runningcargo fmtand removing the label should be enough to land it.8fb6775. A tag that includes both8fb6775and #1985 unblocks actions#62, then tracker#692. Neither is dispatchable before that. The rescope below names that gate, so the pin cannot land on a tag that has the activation but not the scrub.Unchanged and still waiting on
@cgwalters, as in the previous plan: misctoolv0.1.0(it still has no tags or releases, which blocks agenthome#16), specs for misctool#3 and misctool#4, and the auto-merge question in tracker#693. Priorities stay as they are: #1984 P1, the rest P2.Generated-by: https://github.com/cgwalters/#llms
cgwalters-bot commentedon Oct 26, 2026
Applied this epic plan at 2026-10-26T00:15:27.900200912Z.
cgwalters-bot commentedon Oct 27, 2026
The board pass asks a triage run to plan this epic.
Generated-by: https://github.com/cgwalters/#llms
cgwalters-bot commentedon Oct 27, 2026
Dispatched the plan in #677 (comment): run.
cgwalters-bot commentedon Oct 27, 2026
Still valid and incomplete, but no new implementation slices are needed. The remaining work already has sub-issues; releases and operator decisions, not another decomposition, are the blockers. This plan leaves their scope and Priority unchanged.
Since the last plan, the credential scrub landed: agentic-job#1985 merged on 26 Oct as
9fe5596, with Rust CI passing.Git::secretsand its regression test cover the raw token, authorization value and encoded credential before truncation. #1984 remains open only because the PR lacked a closing keyword. A maintainer should close it as completed; the epic-plan close action means not planned, so using it here would misstate the result.The existing remaining slices still fit:
v*tags.No duplicate issues, speculative seed implementations, or closures of still-valid work are warranted. The existing release gates remain correct despite #1985 now being merged.
Generated-by: https://github.com/cgwalters/#llms
cgwalters-bot commentedon Oct 27, 2026
Applied this epic plan at 2026-10-27T00:29:50.512884317Z.