agentleFS
roshie548roshie548/proxmux/CLAUDE.md

proxmux

CLAUDE.md375 starsChanged 11 months agoMITView on GitHub

Terminal UI for managing Proxmox VE clusters, built with Ink (React for CLIs) and Bun. This is a terminal UI, not a web app. Uses Ink (React renderer for CLI). Always use wrap="truncate" on Text in tables/lists:

  • Commits and pushes

The file

We split this CLAUDE.md into the rules it gives an agent

6 rules. About 0 are common, 0 are distinctive, and 6 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 6

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Always use wrap="truncate" on Text in tables/lists:

    line 74
  2. Very specific:

    Add to src/app.tsx switch statement

    line 95
  3. Very specific:

    Add to src/components/Sidebar.tsx views array

    line 96
  4. Very specific:

    Add keyboard hints to src/components/StatusBar.tsx

    line 97
  5. Very specific:

    Update version in package.json

    line 101
  6. Very specific:

    Commit and tag: git tag v0.x.x && git push --tags

    line 103

≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
CLAUDE.md

Proxmux Development Guide

Terminal UI for managing Proxmox VE clusters, built with Ink (React for CLIs) and Bun.

Commands

bun install          # Install dependencies
bun run dev          # Run with hot reload
bun run build        # Build binary for current platform
bun run build:all    # Build binaries for all platforms
bun --bun tsc --noEmit  # Type check

Architecture

src/
├── api/           # Proxmox API client and types
├── components/    # Reusable UI components (Sidebar, StatusBar, DetailView)
├── context/       # React contexts (EditModeContext)
├── hooks/         # Custom hooks (useProxmox, useKeyboard)
├── views/         # Main screens (Dashboard, VMs, Containers, Storage)
├── utils/         # Helpers (format.ts)
├── config/        # Config file loading
├── app.tsx        # Main app with layout and routing
└── index.tsx      # Entry point

Ink Patterns

This is a terminal UI, not a web app. Uses Ink (React renderer for CLI).

Layout with Box and Text

import { Box, Text } from "ink";

<Box flexDirection="column" padding={1}>
  <Text bold color="blue">Title</Text>
  <Text dimColor>Subtitle</Text>
</Box>

Keyboard Input

import { useInput } from "ink";

useInput((input, key) => {
  if (input === "j" || key.downArrow) moveDown();
  if (input === "q") exit();
  if (key.return) confirm();
  if (key.escape) cancel();
});

Responsive Sizing

import { useStdout } from "ink";

const { stdout } = useStdout();
const width = stdout?.columns || 80;
const isNarrow = width < 80;

// Hide optional columns on narrow terminals
// Use compact formats when space is limited
// Add wrap="truncate" to prevent line wrapping

Preventing Text Wrap

Always use wrap="truncate" on Text in tables/lists:

<Box width={cols.name}>
  <Text wrap="truncate">{truncate(name, cols.name - 1)}</Text>
</Box>

API Client

import { getClient } from "./api/client";

const client = getClient();
const vms = await client.getVMs();
const config = await client.getContainerConfig(node, vmid);

Adding a New View

  1. Create src/views/NewView.tsx
  2. Add to src/app.tsx switch statement
  3. Add to src/components/Sidebar.tsx views array
  4. Add keyboard hints to src/components/StatusBar.tsx

Release Process

  1. Update version in package.json
  2. Update CHANGELOG.md
  3. Commit and tag: git tag v0.x.x && git push --tags
  4. GitHub Actions automatically:
    • Builds binaries for all platforms
    • Publishes to npm
    • Updates Homebrew formula

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.