Notice: _filter_block_template_part_area(): "sidebar" is not a supported wp_template_part area value and has been added as "uncategorized". in /home/ntsnews/public_html/wp-includes/functions.php on line 6131

Notice: _filter_block_template_part_area(): "sidebar" is not a supported wp_template_part area value and has been added as "uncategorized". in /home/ntsnews/public_html/wp-includes/functions.php on line 6131
Show HN: Pappardelle, a TUI for Multi-Clauding - NTS News

Show HN: Pappardelle, a TUI for Multi-Clauding

Article URL: https://github.com/chardigio/pappardelle Comments URL: https://news.ycombinator.com/item?id=47293897 Points: 1 # Comments: 0

You type a description, it reads or creates an issue in Linear/Jira, spawns a configured git worktree, builds a PR/MR, and starts a Claude Code session alongside a lazygit session — all wired together in a 3-pane tmux layout you can navigate with simple, customizable keystrokes. The fastest way to get started is with the /init-pappardelle Claude Code skill. It installs Pappardelle, checks prerequisites, asks about your VCS host and issue tracker, and generates a .pappardelle.yml config — all in one interactive session.

For manual installation, see Section 8: Reference. For the full config format, see the configuration reference. The center and right panes in the Pappardelle session are "viewers" — they run nested tmux clients that attach to these independent sessions. When you highlight a different workspace in the list, Pappardelle uses tmux switch-client to instantly swap which session the viewer pane displays.

Pappardelle works with any tmux configuration, but these settings improve the experience — mouse support, Ctrl+Shift+arrow pane navigation, and a clean status bar. See examples/tmux.conf and append to your ~/.tmux.conf. If you don't have one yet: Press q in the workspace list pane to quit. This kills the Pappardelle tmux session and all its viewer panes, returning you to your original terminal. Your Claude and lazygit workspace sessions are not affected — they run in independent tmux sessions and will keep going after Pappardelle exits.

To reattach, just run pappardelle again. Profile selection — Your input is keyword-matched against a profile in .pappardelle.yml. Issue creation/fetch — For new descriptions, a Linear (or Jira) issue is created with a WIP title. For existing issue keys, the issue is fetched. Git worktree — An isolated worktree is created at ~/.worktrees/{repo-name}/{issue-key}/. This is a full working copy of your repo on a new branch, completely isolated from your main checkout.

PR/MR creation — A placeholder PR (GitHub) or MR (GitLab) is created from the new branch. Project setup — Profile commands are executed (e.g., xcodegen generate, dependency installs). Top-level post_worktree_init commands also run after the worktree is created (e.g., copying .env files). Claude & lazygit sessions spawned — A named tmux session is created and Claude Code is launched inside it.

If claude.initialization_command is set in .pappardelle.yml (e.g., /do), that command is passed to Claude along with the issue key. A lazygit session rooted at the worktree dir is also spawned. Pappardelle's recommended /do skill (set via claude.initialization_command in .pappardelle.yml) starts every Claude session with a planning-first workflow. Before writing any code, the agent researches and uses Claude Code's AskUserQuestion tool to clarify requirements — asking about ambiguous scope, confirming design decisions, and validating edge cases.

The goal is to turn a rough prompt into a detailed, unambiguous spec — written back to the issue description — before the first line of code is written. A one-line prompt like "add dark mode to settings" leaves a lot of questions open: which settings screen? System preference or manual toggle? What colors? The /do skill instructs the agent to surface these questions upfront rather than guessing.

This front-loaded clarification produces better code on the first pass and fewer revision cycles. Every AskUserQuestion exchange is automatically posted as a comment on the Linear or Jira issue by the comment-question-answered.py hook. This means: Pappardelle is configured via a .pappardelle.yml file at your repo root. The key concepts: For a production .pappardelle.yml used across a polyglot monorepo (Python backends + Swift iOS apps), see examples/monorepo-pappardelle.yml.

Because Pappardelle runs entirely inside tmux, you can access your full workspace setup from anywhere — all you need is an SSH connection to the machine running it. When you're doom-coding from your phone, you want one-tap access to open the PR on the device in your hand. Bind a key that sends an ntfy notification with a clickable link: Press z on a workspace and your phone buzzes with a notification — tap it and the PR opens in the GitHub app.

Pappardelle is designed for single-repo workflows, but (experimentally) you can extend it to orchestrate changes across multiple repositories using a parent (pappa) repo. The parent repo's primary purpose is to share settings, context, and orchestration skills to coordinate work across child repos. Child repos are not committed to the parent — they're shallow-cloned on demand during workspace setup.

Multi-repo work has been an achilles heel for Claude Code in the past, but I'm hoping Agent Teams can help solve this. One key unlock with agent teams is that teammates can be spawned in separate directories, meaning we can have a parent repo, but then spawn an agent per relevant child repo, which is nice because it automatically loads that repo's CLAUDE.md, skills, settings, etc. Repos are pulled down as needed — not upfront.

During the planning phase, use a search tool like SourceBot's codesearch MCP to identify which repos are relevant, then shallow-clone only those: This keeps initialization fast and reduces noise for the agent while it greps and globs. Because we use –depth 1, only the latest commit is fetched — no full history. Plugin skills (added in the parent repo's settings.json but defined elsewhere) are skills that can be used by any repo / agent teammate receives automatically.

These handle single-repo concerns. Example: An /address-mr-feedback plugin that lets any agent look at its own repo's MR and address reviewer comments. Parent repo skills (in the parent repo's .claude/skills/) are orchestration skills that spawn agent teams across child repos. Example: An /address-mr-feedbacks (plural) skill that spins up an agent team, spawning one agent per relevant child repo — each agent calls the plugin's singular skill for its own MR.

A starter /do skill tailored for multi-repo workflows is available at examples/skills/do-multi-repo/SKILL.md. It covers shallow cloning, agent team spin-up, per-repo QA, and coordinated PR creation. Install it into your parent repo with: Note the fallback to ${REPO_ROOT}/repo-a here ensures this shortcut works in the master/main space. Multi-repo support: State is namespaced per repository under ~/.pappardelle/repos/{repoName}/.

Running pappardelle in two different repos keeps their workspace registries completely separate. On first run, existing state is automatically migrated from the legacy global location. Warnings and errors also appear in a red box at the bottom of the TUI. Press e to view them.

Summary

This report covers the latest developments in iphone. The information presented highlights key changes and updates that are relevant to those following this topic.


Original Source: Github.com | Author: chardigio | Published: March 8, 2026, 2:52 am

Leave a Reply