By typeless
Skills for mastering the putup build system: writing Tupfiles, configuring projects, cross-compilation, composable libraries, and contributing
Writing dual-mode Tupfiles for standalone and component builds. Use when writing reusable libraries, using the self-contained library convention, setting up multi-library projects, or running putup parse --strict.
Contributing to putup development. Use when building putup, running tests, writing E2E tests, understanding the architecture, or following the code style.
Cross-compilation and BSP development with putup. Use when setting up cross-compile toolchains, 3-tree builds, generator programs, config headers, or multi-library BSP projects.
Setting up putup projects. Use when initializing a project, configuring variant builds, choosing build modes, running diagnostics, or using putup commands.
Writing Tupfiles with putup. Use when authoring Tupfiles, debugging build failures, working with rule syntax, variables, bang macros, groups, conditionals, or generators.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A build system using the Tupfile format.
Install:
curl -fsSL https://raw.githubusercontent.com/typeless/putup/main/install.sh | sh
Note: The binary is named
putup, butpupworks as an alias.
putup - build system using Tupfile format
Usage: putup [OPTIONS] [TARGETS]
putup [OPTIONS] <command>
Running 'putup' executes the build. Use a command for other operations.
Commands:
configure Generate tup.config files (two-stage build)
clean Remove generated files
distclean Full reset: remove .pup and variant directory
parse Parse and validate Tupfiles
show <format> Show build info:
script - Shell script
compdb - compile_commands.json
graph - DOT format (--summary for text)
var [NAME] [--json] - Variable tracking
Options:
-j, --jobs N Run N jobs in parallel
-k, --keep-going Continue after failures
-n, --dry-run Print commands without executing
-v, --verbose Verbose output
-D, --define VAR=value
Override config variable (-D VAR is shorthand for -D VAR=y)
-S DIR Source directory (where source files live)
-C DIR Config directory (where Tupfiles live)
-B DIR Build/output directory (can use multiple times)
-c, --config FILE Use FILE as tup.config (skip config rules)
--summary Human-readable output (for show graph)
--stat Print build statistics
-A, --all Full project build (ignore cwd scoping)
-a, --all-deps Include upstream deps in scoped builds
-- End of options; remaining args are targets
--version Print version
-h, --help Print this help
Targets:
A variant is a directory containing tup.config. Anything else is a scope.
TARGET VARIANT SCOPE
build build (all) # if build/tup.config exists
build/src/lib build src/lib
src/lib (none) src/lib # no tup.config in src/
build/foo.o build foo.o # single output rebuild
build-* (glob) (all) # multiple variants
Examples:
putup Build all variants
putup build-debug Build single variant
putup build-* Build all matching variants
putup src/lib Scoped build across all variants
Environment:
PUP_SOURCE_DIR Source directory (overridden by -S)
PUP_CONFIG_DIR Config directory (overridden by -C)
PUP_BUILD_DIR Build directory (overridden by -B)
PUP_IMPLICIT_DEPS Set to 0 to disable auto-generated dep rules (default: enabled)
Putup ships a Claude Code plugin with skills for Tupfile authoring, project setup, cross-compilation, composable libraries, and contributing.
For contributors (working in this repo):
claude --plugin-dir plugins/putup
For external users (install from marketplace):
/plugin marketplace add typeless/putup
/plugin install putup@typeless-putup
Skills: /putup:tupfile-authoring, /putup:project-setup, /putup:cross-compile, /putup:composable-libraries, /putup:contributing
MIT License - see LICENSE for details.
npx claudepluginhub typeless/putup --plugin putupConversational planning and MCP-based daemon integration for eforge — enqueue, run, and monitor builds from within Claude Code
Automates pubm setup for new open source projects — configures registries, CI, and changesets with a single skill invocation.
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Write feature specs, plan roadmaps, and synthesize user research faster. Keep stakeholders updated and stay ahead of the competitive landscape.