agent-wiki-compare-out…
Compare successful and failed normalized agent trajectories to derive evidence-backed agent-wiki guidelines. Use when Codex has…
Publish a private entity (guideline, feedback, project or reference) to a configured write-scope repo.
Claude Code
$ npx -y skills add AgentToolkit/altk-evolve --skill evolve-lite-publish --agent claude-code
Codex
$ npx skills add AgentToolkit/altk-evolve --skill evolve-lite-publish -a codex -y
Cursor
$ npx skills add AgentToolkit/altk-evolve --skill evolve-lite-publish -a cursor -y
Gemini CLI
$ npx skills add AgentToolkit/altk-evolve --skill evolve-lite-publish -a gemini-cli -y
GitHub Copilot
$ npx skills add AgentToolkit/altk-evolve --skill evolve-lite-publish -a github-copilot -y
OpenCode
$ npx skills add AgentToolkit/altk-evolve --skill evolve-lite-publish -a opencode -y
Windsurf
$ npx skills add AgentToolkit/altk-evolve --skill evolve-lite-publish -a windsurf -y
name: evolve-lite:publish description: Publish a private entity (guideline, feedback, project or reference) to a configured write-scope repo.
Publish one or more private entities from `.evolve/entities/<type>/` into a configured **write-scope** repo. `<type>` is the directory the entity was saved in: `guideline` for learned guidelines, or a native memory type (`feedback`, `project`, `reference`) for entities saved by adapt-memory or the EVOLVE.md save flow. The entity is stamped with `visibility: public`, `owner`, `published_at`, and `source`, moved into the local clone of the write repo under the same `<type>/` directory, and committed / pushed to the remote.
The same local clone is also what `evolve-lite:sync` pulls from — so you and anyone else publishing to the same repo stay in sync.
Read `evolve.config.yaml`. If no entry has `scope: write`, tell the user:
> "You need at least one write-scope repo to publish to. Run evolve-lite:subscribe with --scope write to set one up, then come back."
Then stop.
If `identity.user` is missing, ask for it and add it to the config.
Ensure `.evolve/` is gitignored at the project root:
grep -qxF '.evolve/' .gitignore 2>/dev/null || echo '.evolve/' >> .gitignore
Filter `repos:` to entries with `scope: write` (Step 1 already aborted if there were zero, so at least one exists here).
Let `{repo}` be the chosen repo name and `{branch}` its configured branch (default `main`).
List the `.md` files in every type directory under `.evolve/entities/`, skipping `.evolve/entities/subscribed/` (other people's entities, never yours to publish) and `user/` (personal facts must remain private). Show each as `{type}/{filename}` and ask the user which to publish.
For each selected file, run:
python3 .bob/skills/evolve-lite-publish/scripts/publish.py --entity "{filename}" --type "{type}" --repo "{repo}" --user "{identity.user}"For a previously published memory that has been re-mirrored after an edit, compare it with the shared copy. If the user requested an update and its owner matches `identity.user`, add `--update` to the command above. Updates require an existing publication with a known matching owner; ordinary publish still refuses collisions. Use `evolve-lite:unpublish` to restore a publication to private storage and remove it from the shared repository.
`user/` memories are refused: rewrite a shareable fact as an explicitly attributed `project/` or `reference/` entity so subscribers cannot mistake it for a fact about themselves.
Build `{names}` as a comma-joined list of selected filenames, and `{entity_paths}` as a space-joined list of the corresponding `{type}/{filename}` paths inside the clone (the files the publish script just wrote).
git -C ".evolve/entities/subscribed/{repo}" add -- {entity_paths}
git -C ".evolve/entities/subscribed/{repo}" commit -m "[evolve] publish: {names}"
git -C ".evolve/entities/subscribed/{repo}" push origin "{branch}"On push success, continue to Step 7.
If the push fails and stderr mentions `rejected` / `non-fast-forward` / `fetch first`, another writer pushed to `{branch}` in between. Rebase the local commit and push once more:
git -C ".evolve/entities/subscribed/{repo}" fetch origin "{branch}"
git -C ".evolve/entities/subscribed/{repo}" rebase "origin/{branch}"review. Do not `git rebase --continue` or `git push` without an explicit user confirmation.
1. `git -C ".evolve/entities/subscribed/{repo}" status --porcelain` lists the conflicted paths. If any are `UD`, `DU`, or binary, skip to the abort step — those aren't safe to auto-resolve. 2. For each `UU`/`AA` file, read the conflict markers. During a rebase, `<<<<<<< HEAD` is the **remote's** version and the section under the commit sha is the **publish change** being replayed (opposite of a regular merge). Write an intent-preserving resolution; don't `git add` yet. 3. Show the user the diff (`git -C ".evolve/entities/subscribed/{repo}" diff HEAD -- {file}`) per resolved file with a one-line strategy summary, and ask whether to **continue** (stage + `rebase --continue` + push) or **abort** (roll back for manual resolution). 4. On **continue**:
git -C ".evolve/entities/subscribed/{repo}" add {resolved-files}
git -C ".evolve/entities/subscribed/{repo}" rebase --continue
git -C ".evolve/entities/subscribed/{repo}" push origin "{branch}"Then Step 7. If `rebase --continue` surfaces a new conflict, loop from step 1. 5. On **abort** — user declined, conflict isn't safely resolvable, or the proposed merge feels unsafe:
git -C ".evolve/entities/subscribed/{repo}" rebase --abortThe local publish commit is preserved at `.evolve/entities/subscribed/{repo}` but not on the remote. Tell the user to either (a) resolve manually in that directory (`git fetch origin {branch} && git rebase origin/{branch}`, fix conflicts, `git add` + `git rebase --continue`, `git push origin {branch}`) or (b) re-run `evolve-lite:publish` with a different filename if the conflict is a shared name.
If the push fails for any other reason (auth, network, missing remote ref), surface git's error and stop — rebase will not help.
Tell the user what was published and to which repo.
Evolve helps AI agents learn from experience. It turns past trajectories into reusable guidelines that help agents complete future tasks, without changing model weights.
Compare successful and failed normalized agent trajectories to derive evidence-backed agent-wiki guidelines. Use when Codex has…
Read all atomic guidelines in wiki-twobatch/guidelines/ and propose themed clusters that group near-duplicates. Writes cluster…
Consult an agent-wiki for guidelines relevant to the task at hand. The wiki itself documents how to retrieve from it (AGENTS.md).…
Read a normalized Claude Code trajectory JSON and extract reusable guidelines into wiki-twobatch/guidelines/. Use when mining…
Ingest one or more agent trajectories (raw bob/claude traces or normalized JSON) into an agent-wiki end-to-end — convert,…
Read a normalized Claude Code trajectory JSON and write an episodic summary page to wiki-twobatch/summaries/. Use when…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.