Finishing a Development Branch
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
Hidden layer of structured git notes for agent collaboration.
$ npx skills add openprose/mycelium --skill mycelium -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install openprose/mycelium mycelium --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "mycelium" agent skill from https://github.com/openprose/mycelium/tree/main into .claude/skills/mycelium/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mycelium", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add openprose/mycelium --skill mycelium -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install openprose/mycelium mycelium --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "mycelium" agent skill from https://github.com/openprose/mycelium/tree/main into .agents/skills/mycelium/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mycelium", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add openprose/mycelium --skill mycelium -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install openprose/mycelium mycelium --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "mycelium" agent skill from https://github.com/openprose/mycelium/tree/main into .cursor/skills/mycelium/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mycelium", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add openprose/mycelium --skill mycelium -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install openprose/mycelium mycelium --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "mycelium" agent skill from https://github.com/openprose/mycelium/tree/main into .gemini/skills/mycelium/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mycelium", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install openprose/mycelium myceliumInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add openprose/mycelium --skill mycelium -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "mycelium" agent skill from https://github.com/openprose/mycelium/tree/main into .github/skills/mycelium/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mycelium", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add openprose/mycelium --skill mycelium -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install openprose/mycelium mycelium --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "mycelium" agent skill from https://github.com/openprose/mycelium/tree/main into .opencode/skills/mycelium/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mycelium", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
myceliumHidden layer of structured git notes for agent collaboration.
Mycelium is an agent skill from openprose/mycelium. Hidden layer of structured git notes for agent collaboration. When working in any git repo, check for notes on objects you touch before acting, and leave notes after meaningful work. Uses git notes directly — helper script and workflow scripts included.
Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 55 other files, including scripts (for example `.claude-plugin/marketplace.json`, `.github/workflows/ci.yml` and `CHANGELOG.md`).
It sits in Development, covering Git workflow. It works with Git. The licence is MIT.
Read from SKILL.md and the folder at commit a58b8c9. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
gitkindFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Mycelium loads about 2.4k tokens when it runs. Until then it costs about 66 tokens; SKILL.md has 611 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from openprose/mycelium at commit a58b8c9, republished under its MIT licence (© openprose). 611 words, ~2,360 tokens.
.claude/skills/mycelium/SKILL.md (or your agent's skills folder). This skill also uses 50 other files; get the full folder from GitHub.Structured notes attached to git objects via refs/notes/mycelium.
Before working on a file, check for its note. After meaningful work, leave a note.
That’s the whole contract. Mycelium is the storage layer. Richer arrival / history workflows can live in skill scripts.
Start every session with:
mycelium.sh find constraint # project principles & rules
mycelium.sh find warning # known fragile things
scripts/context-workflow.sh <file> # recommended arrival workflow (repo checkout)If you only have the runtime file and not this repo checkout, do the same workflow manually:
mycelium.sh read <file> # exact note on current object
mycelium.sh read HEAD # current commit note
# plus raw git notes show on parent dirs / root as neededBefore leaving:
mycelium.sh note HEAD -k context -m "What I did and why."
mycelium.sh note <changed-file> -k <kind> -m "What future agents should know."If you made a decision, use kind decision and add a tested-by edge to the test that validates it. If you found something fragile, use kind warning.
Use these as the protocol-ish primitives:
mycelium.sh note [target] -k <kind> -m <body> # write
mycelium.sh read [target] # read exact note on current object
mycelium.sh follow [target] # read + resolve edges
mycelium.sh refs [target] # inbound references
mycelium.sh find <kind> # search by kind
mycelium.sh kinds # vocabulary in use
mycelium.sh list # all annotated objects
mycelium.sh branch [use|merge] [name] # branch-scoped notes
mycelium.sh doctor # graph facts
mycelium.sh dump # everything, greppableThese are recommended workflows, not part of the core CLI:
scripts/context-workflow.sh <path> [ref] # current file + parent dirs + current commit
scripts/path-history.sh <path> [ref] # older file notes via git history
scripts/note-history.sh <target> # note overwrite history via notes ref
scripts/compost-workflow.sh [path|oid] [--compost|--renew] # explicit stale/renew workflowUse them when you want richer context, but keep in mind they are recipes built on top of git + mycelium primitives.
Rule of thumb:
context-workflow.sh = default arrival workflow for a pathpath-history.sh = explicit historical notes for a filenote-history.sh = overwrite history for one note targetcompost-workflow.sh = opt-in stale/renew lifecycle for repos that still want itIf a repo still wants an explicit stale/renew lifecycle, use scripts/compost-workflow.sh. The simpler default is to use git-native history first and write a fresh current note when older context still matters.
Three patterns cover most usage.
A file can collect notes from different agents over time.
mycelium.sh note src/auth.ts -k summary -m "Handles OAuth2 refresh flow."
mycelium.sh note src/auth.ts -k warning -m "Token refresh has a race condition."
mycelium.sh refs src/auth.tsWhen you need older notes on that file, use git history rather than a special core lifecycle command:
scripts/path-history.sh src/auth.tsA single note can link to multiple objects via edges.
mycelium.sh note SKILL.md -k decision -t "Packaged as an agent skill" \
-e "depends-on blob:$(git rev-parse HEAD:README.md)" \
-m "The skill teaches agents the convention on-demand."
mycelium.sh follow SKILL.mdUse this whenever a note’s meaning involves more than one object.
Use depends-on edges to structure planned work.
mycelium.sh note src/auth.ts -k context -t "Planned: fix race condition" \
-m "Need mutex around token refresh. See warning note."
mycelium.sh note src/http.ts -k context -t "Planned: retry after refresh" \
-m "HTTP client should retry once after auth refresh."
mycelium.sh note HEAD -k context -t "Plan: auth hardening" \
-e "depends-on blob:$(git rev-parse HEAD:src/auth.ts)" \
-e "depends-on blob:$(git rev-parse HEAD:src/http.ts)" \
-m "Two files need coordinated changes."mycelium.sh read path/to/file.ts # exact note on current object
mycelium.sh follow HEAD # note + where its edges lead
mycelium.sh refs path/to/file.ts # all notes pointing at target
mycelium.sh find decision # all decisions
mycelium.sh find constraint # all constraints
git log --notes=mycelium --oneline -20 # recent commits with notesOr with raw git:
git notes --ref=mycelium show $(git rev-parse HEAD:path/to/file.ts) 2>/dev/null
git notes --ref=mycelium show HEAD 2>/dev/nullmycelium.sh note -k context -m "Why I did this." # HEAD
mycelium.sh note path/to/file.ts -k summary -m "What this does." # file
mycelium.sh note src/auth/ -k constraint -m "Must be retryable." # directory
mycelium.sh note . -k value -m "Project-level principle." # project
mycelium.sh note -k decision -t "Use YAML" -m "Needs comments." # decisionEvery target has different stability.
| Target | Stable? | Use when |
|---|---|---|
path/to/file | ✓ findable by path even if file changes | Note is about the file |
$(git rev-parse HEAD:file) | pinned to this exact blob OID | Note is about this specific version |
. | ✓ project-level, always findable | Note applies to the whole repo |
HEAD | pinned to commit OID (jj: survives via change_id) | Note is about this change |
src/dir/ | ✓ findable by path | Note is about the module |
Default: use paths. Most notes are about files, not specific versions. The path edge keeps them findable. Use raw OIDs only when you mean “this exact content.”
kind decision
title Short label
edge explains commit:abc123...
edge targets-path path:src/auth/retry.ts
Free-form body. Markdown encouraged.Headers: kind (required), edge, title, status
Kinds: decision · context · summary · warning · constraint · observation · value · todo — or invent your own.
Edge types: explains · applies-to · depends-on · warns-about · targets-path · targets-treepath — or invent your own.
Targets: commit:<oid> · blob:<oid> · tree:<oid> · path:<filepath> · note:<oid>
There is no special supersedes chain in the note body. Overwrite history lives in git itself on the notes ref.
scripts/note-history.sh path/to/file.tsOr raw git:
OID=$(git rev-parse HEAD:path/to/file.ts)
FANOUT="${OID:0:2}/${OID:2}"
git log -p refs/notes/mycelium -- "$FANOUT"If you want older notes on a file path, use git history:
scripts/path-history.sh src/auth.tsIf an older note still matters, write a fresh current note that carries forward the relevant insight.
Multiple tools or agents can write notes on the same object without obliteration. Each slot is a named lane backed by its own notes ref.
mycelium.sh note src/auth.ts --slot skeleton -k observation -m "Structure."
mycelium.sh note src/auth.ts --slot enricher -k summary -m "Context."
mycelium.sh read src/auth.ts --slot skeletonRules:
read / follow use the default slot unless --slot is givenfind / kinds / doctor / prime aggregate all slotsmain, defaultmycelium.sh activate # notes visible in git log
mycelium.sh sync-init # notes travel with fetch/push
mycelium.sh repo-id init # durable repo identity
mycelium.sh zone init # confidentiality zone
mycelium.sh export f -a internal
mycelium.sh export --all --audience internal # batch export all notes
mycelium.sh export --all --kind decision -a public # batch export by kind
mycelium.sh import remote --as lib
mycelium.sh list-imports # show imported reposIf .jj/ is detected, mycelium adapts automatically — no flags needed. Commit notes get a targets-change edge (stable across jj rewrites). read falls back to change_id lookup when the commit OID changes. Prefer notes on files over commits — blob OIDs survive rewrites, commit OIDs don’t.
When jj rewrites commits (amend, rebase, squash), notes on old OIDs become orphaned. Use migrate to bulk-reattach them:
mycelium.sh migrate --dry-run
mycelium.sh migrate
mycelium.sh migrate --map mapping.txtRun mycelium.sh help for jj-specific guidance.
© openprose, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 50 other files (scripts) in the repository root of openprose/mycelium.
Open the folder on GitHubat commit a58b8c9
Mycelium next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Mycelium this skillopenprose/mycelium | 123 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Finishing a Development Branchobra/superpowers | 296k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Code Design Rationale Investigatorcursor/plugins | 10k | 9 repos | ~2.6k | Automated safety check: Pass | None | |
| Contributor-First PR MergeHKUDS/OpenHarness | 16k | 1 repos | ~847 | Automated safety check: Pass | MIT | |
| Migrate Internal Package into GhostTryGhost/Ghost | 55k | — | ~3.8k | Automated safety check: Pass | MIT | |
| Create Pull Requestcline/cline | 70k | 1 repos | ~1.6k | Automated safety check: Pass | Apache-2.0 |
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
cursor/plugins
Digs into why code is shaped the way it is by checking git history, pull requests and connected tools in parallel, then reporting a cited read on the tradeoffs.
HKUDS/OpenHarness
Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.
TryGhost/Ghost
Moves a package from another TryGhost repository into Ghost as an internal workspace package while keeping its Git history, with checkpoints for the steps that need an administrator.
cline/cline
Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.
tailcallhq/forgecode
Resolves Git merge conflicts with a plan-first workflow that keeps both sides' intent, regenerates lock files and backs up deleted-but-modified files.
Works with
Categories
Hidden layer of structured git notes for agent collaboration. Mycelium is an agent skill from openprose/mycelium. Hidden layer of structured git notes for agent collaboration.
Mycelium fits situations like: tasks that involve Git workflow.
Run `npx skills add openprose/mycelium --skill mycelium -a claude-code`. Or copy the skill folder (the openprose/mycelium repository) into .claude/skills/mycelium in your project. Claude Code loads it when a task matches its description.
Run `npx skills add openprose/mycelium --skill mycelium -a codex`. Or copy the skill folder (the openprose/mycelium repository) into .agents/skills/mycelium in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add openprose/mycelium --skill mycelium -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mycelium, .gemini/skills/mycelium, .github/skills/mycelium and .opencode/skills/mycelium in your project.
Going by SKILL.md and its folder, Mycelium needs a shell for the scripts in its folder and the command-line tools its instructions call (git and kind). Our summary lists: A Bash shell.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Mycelium is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Mycelium: Finishing a Development Branch (obra/superpowers, 296k stars), Code Design Rationale Investigator (cursor/plugins, 10k stars), Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars) and Migrate Internal Package into Ghost (TryGhost/Ghost, 55k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
openprose (a GitHub organization) maintains it in openprose/mycelium, which has 123 GitHub stars. The repository was last updated on April 10, 2026.
Source: openprose/mycelium on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.