merge-upstream
Merge new upstream releases of nushell and reedline into Shannon
Skill by shannonshell
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/shannonshell-merge-upstream
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/merge-upstream
What's inside
- Skill name
merge-upstream- Description
- Merge new upstream releases of nushell and reedline into Shannon
- License
- MIT
- Instructions
- 321 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- files: referenced but missing: scripts/sync-upstream.sh
- body: contains an absolute path from the author's machine
Files (1)
- SKILL.md
SKILL.md (first lines)
# Merge Upstream Shannon tracks nushell and reedline as git subtrees under `nushell/` and `reedline/`. Every few nushell releases, we pull upstream to pick up new features and fixes. This skill captures what actually works — because `scripts/sync-upstream.sh` alone is not enough when upstream has drifted. ## Why the script alone doesn't work `scripts/sync-upstream.sh` runs `git subtree pull` for nushell and reedline, then `cargo build && cargo test`. That's fine for tiny drifts. For real upstream releases it fails because: 1. **Subtree auto-merge is noisy.** A hundred or more files will conflict — most of them files Shannon never touched. The auto-merger gets confused by rename chains and workspace-wide edits. 2. **Auto-merged files end up half-upstream, half-fork.** Even files that don't show conflicts can end up with stale content that references removed APIs. You won't see this until `cargo build` fails deep in `nu-protocol` or `nu-parser`. 3. **New upstream files get missed.** When auto-merge fights with the subtree prefix, new files upstream added may not appear in our tree at all — the build will complain about missing modules. 4. **Shannon's own `src/` lags upstream API.** `src/main.rs` and `src/run.rs` are copied from nushell's binary and drift every release. 5. **Root `Cargo.toml` version pins don't auto-bump.** The Shannon crate still references the old `0.N.0` nu-\* versions. 6. **Reedline must move in lockstep.** Nushell's workspace pins a specific reedline version; if you only pull nushell, the build fails because our vendored reedline is stale. ## Shannon's fork surface (the only 10 files we preserve) Keep these exact files across upgrades. Everything else in `nushell/` should come from upstream verbatim: - `nushell/Cargo.toml` — workspace reedline path dep, shannon package renames (`shannon-nu-cli`, `shannon-nu-lsp`), shannon crate versions - `nushell/crates/nu-cli/Cargo.toml` — `name = "shannon-nu-cli"`, tree-sitter deps for `BashHighlighter` - `nushell/crates/nu-cli/src/bash_highlight.rs` — NEW, tree-sitter-based bash syntax highlighter - `nushell/crates/nu-cli/src/mode_dispatcher.rs` — NEW, `ModeDispatcher` trait - `nushell/crates/nu-cli/src/lib.rs` — declares `mod bash_highlight`, `mod mode_dispatcher`, and re-exports `BashHighlighter`, `ModeDispatcher`, `ModeResult` - `nushell/crates/nu-cli/src/repl.rs` — dispatch hook in `loop_iteration()` that forwards to `ModeDispatcher::execute()` when `$env.SHANNON_MODE` is not `"nu"`; also a few smaller tweaks - `nushell/crates/nu-cli/src/nu_highlight.rs` — small tweak - `nushell/crates/nu-command/src/platform/input/input_.rs` — small tweak - `nushell/crates/nu-lsp/Cargo.toml` — `name = "shannon-nu-lsp"`, references `shannon-nu-cli` Verify this list against the current state before you start: ```sh git diff --stat <last-nushell-import-commit>..HEAD -- nushell/ ``` If new Shannon-modified files appear, add them to the preserve list below. ## The reliable procedure Work on a branch — never on main. ### 1. Preflight Clean working tree. Fetch upstream. Count the drift. ```sh git status # must be clean git fetch upstream-nushell upstream-reedline git log --oneline <last-merge-base>..upstream-nushell/main | wc -l ``` Large drifts (100+ commits) are the norm — that's fine, just plan for conflicts. ### 2. Branch off ```sh git checkout -b upgrade/nushell-$(date +%Y-%m-%d) ``` ### 3. Pull nushell (expect conflicts) ```sh git subtree pull --prefix nushell upstream-nushell main \ -m "Merge nushell upstream $(date +%Y-%m-%d)" ``` This will fail with "Automatic merge failed". That is expected. ### 4. Save Shannon's fork files to /tmp Before doing anything destructive: ```sh mkdir -p /tmp/shannon_patches cp nushell/Cargo.toml /tmp/shannon_patches/Cargo.toml cp nushell/crates/nu-cli/Cargo.toml /tmp/shannon_patches/nu-cli-Cargo.toml cp nushell/crates/nu-cli/src/bash_highlight.rs /tmp/shannon_patches/bash_highlight.rs cp nushell/crates/nu-cli/src/mode_dispatcher.rs /tmp/shannon_patches/mode_dispatcher.rs cp nushell/crates/nu-cli/src/lib.rs /tmp/shannon_patches/lib.rs cp nushell/crates/nu-cli/src/nu_highlight.rs /tmp/shannon_patches/nu_highlight.rs cp nushell/crates/nu-cli/src/repl.rs /tmp/shannon_patches/repl.rs cp nushell/crates/nu-command/src/platform/input/input_.rs /tmp/shannon_patches/input_.rs cp nushell/crates/nu-lsp/Cargo.toml /tmp/shannon_patches/nu-lsp-Cargo.toml ``` The unresolved conflict markers in those files are fine — they're snapshots, not for reuse. What you actually need from them is the Shannon side of each hunk, which you'll recreate by hand in step 7. In practice the easier workflow is: commit the broken merge first (step 5), then re-export clean Shannon versions from the main branch: ```sh git show main:nushell/Cargo.toml > /tmp/shannon_patches/Cargo.toml # ... and so on
From shannonshell/shannon, MIT.
More from shannonshell/shannon
- 0.547score
codex-review
shannonshell
Ask Codex to review Shannon work.
SkillCFreshness: C★ 11Claude Code +9 - 0.543score
claude-review
shannonshell
Ask Claude to review Shannon work.
SkillCFreshness: C★ 11Claude Code +9 - 0.541score
research-open-source
shannonshell
Use the local copies of each repo when doing research.
SkillCFreshness: C★ 11Claude Code +9 - 0.541score
create-skill
shannonshell
Create a new agent skill.
SkillCFreshness: C★ 11Claude Code +9 - 0.539score
fix-nerd-fonts
shannonshell
Verify and fix Nerd Font icons after editing files.
SkillCFreshness: C★ 11Claude Code +9 - 0.539score
adversarial-review
shannonshell
Run an in-session adversarial review of Shannon work using a fresh-context reviewer.
SkillCFreshness: C★ 11Claude Code +9 - 0.537score
debug-logs
shannonshell
Store all debug logs in ~/dev/shannon/logs/.
SkillCFreshness: C★ 11Claude Code +9 - 0.536score
format-markdown
shannonshell
Format markdown files with prettier.
SkillCFreshness: C★ 11Claude Code +9 - 0.536score
format-zig
shannonshell
Format Zig files with zig fmt.
SkillCFreshness: C★ 11Claude Code +9 - 0.536score
format-rust
shannonshell
Format Rust files with cargo fmt.
SkillCFreshness: C★ 11Claude Code +9 - 0.533score
commit
shannonshell
Write entertaining commit messages as poetry
SkillCFreshness: C★ 11Claude Code +9
Signals
- Stars
- 11
- Forks
- 1
- Open issues
- 3
- Last commit (this folder)
- Jun 20, 2026 (4 months ago)
- Last release
- Jun 20, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/shannonshell/shannon
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from shannonshell
- 0.547score
codex-review
shannonshell
Ask Codex to review Shannon work.
SkillCFreshness: C★ 11Claude Code +9 - 0.543score
claude-review
shannonshell
Ask Claude to review Shannon work.
SkillCFreshness: C★ 11Claude Code +9 - 0.541score
research-open-source
shannonshell
Use the local copies of each repo when doing research.
SkillCFreshness: C★ 11Claude Code +9 - 0.541score
create-skill
shannonshell
Create a new agent skill.
SkillCFreshness: C★ 11Claude Code +9 - 0.539score
fix-nerd-fonts
shannonshell
Verify and fix Nerd Font icons after editing files.
SkillCFreshness: C★ 11Claude Code +9 - 0.539score
adversarial-review
shannonshell
Run an in-session adversarial review of Shannon work using a fresh-context reviewer.
SkillCFreshness: C★ 11Claude Code +9
Cite this page
merge-upstream skill. Agent Mart. https://agentmart.dev/skills/shannonshell-merge-upstream (last updated 2026-10-24)