惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
M
MIT News - Artificial intelligence
MyScale Blog
MyScale Blog
博客园_首页
G
Google Developers Blog
博客园 - 【当耐特】
美团技术团队
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
Vercel News
Vercel News
小众软件
小众软件
博客园 - 司徒正美
雷峰网
雷峰网
T
Tailwind CSS Blog
V
V2EX
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
罗磊的独立博客
量子位
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog

Show HN

Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal). Release v0.1.2.1 · kouhxp/yapsnap GitHub - noopolis/moltnet: Self-hostable chat network for AI agents. Pre-built bridges for Claude Code, Codex, and the Claws. Rooms, DMs, history. No Slack bots, no Matrix, no glue code.
GitHub - naya-ai/promptctl: Git for your AI prompts — ver...
shawnaya101 · 2026-06-25 · via Show HN

promptctl — Git for your AI prompts

CI License: MIT Go

Git for your AI prompts.

Track, version, diff, and rollback your LLM prompts — just like you version your code.

$ promptctl commit system --file prompts/system.txt -m "initial"
✓ Committed prompt "system" as v1

$ promptctl commit system --file prompts/system.txt -m "added citation rule"
✓ Committed prompt "system" as v2

$ promptctl diff system
--- system v1 (2026-06-01 09:12)
+++ system v2 (2026-06-03 14:47)

- You are a helpful assistant.
+ You are a helpful assistant. Always cite your sources.

$ promptctl rollback system 1 -m "reverting — citation hurt recall"
✓ Rolled back "system" to v1 → saved as v3

The Problem

Your prompts live in random places — hardcoded in files, buried in Notion docs, copy-pasted in Slack. When something breaks or stops working well, you have no idea:

  • What the prompt looked like last week when it was working
  • What changed between versions
  • Which version performed best
  • How to get back to a specific point

promptctl solves this. It's git for prompts.


Installation

Requires Go 1.22+.

go install github.com/naya-ai/promptctl/cmd/promptctl@latest

Or build from source:

git clone https://github.com/naya-ai/promptctl.git
cd promptctl
make build    # binary at bin/promptctl
# or: go build -o bin/promptctl ./cmd/promptctl/

Demo

promptctl terminal demo


Quick Start

# 1. Initialize in your project (creates .promptctl/store.json)
promptctl init

# 2. Save your first prompt version
echo "You are a helpful assistant." | promptctl commit system -m "initial"

# 3. Make a change and save it
echo "You are a helpful assistant. Always cite sources." | promptctl commit system -m "added citation rule" --model claude-3

# 4. See the history
promptctl log system --preview

# 5. Compare latest vs. previous
promptctl diff system

# 6. Roll back
promptctl rollback system 1 -m "reverting"

Commands

init

Initialize promptctl in the current directory. Creates .promptctl/store.json.

commit

Save a new version of a prompt.

# From stdin
echo "You are a helpful assistant." | promptctl commit system -m "initial"

# From a file (recommended for longer prompts)
promptctl commit system --file prompts/system.txt -m "from file"

# With metadata
promptctl commit classifier -m "optimized for speed" --model gpt-4o-mini --tag prod

# Interactive — type END on its own line to finish
promptctl commit system -m "manual entry"

Flags:

  • -m / --message — commit message (default: "add version N")
  • --model — tag with the model this prompt targets
  • --tag — add a label to this version
  • -f / --file — read content from a file instead of stdin

log

Show version history.

promptctl log                          # all prompts
promptctl log system                   # one prompt
promptctl log system --preview         # show content snippets
promptctl log system --tag prod        # filter by tag
promptctl log system --json            # machine-readable output

diff

Compare versions side by side with color highlighting.

promptctl diff system            # latest vs. previous
promptctl diff system 2          # v2 vs. latest
promptctl diff system 1 3        # v1 vs. v3

show

Show a prompt version.

promptctl show system            # latest version
promptctl show system 2          # specific version
promptctl show system --raw      # content only (good for piping)
promptctl show system --json     # full JSON
promptctl show system --copy     # copy to clipboard (macOS/Linux)
promptctl show system --version-at 2026-06-01   # version that was latest on that date

rollback

Restore a previous version. Creates a new version (non-destructive).

promptctl rollback system 1
promptctl rollback system 1 -m "reverting — citation hurt recall"

list

List all tracked prompts.

promptctl list
promptctl list --json       # JSON array with version counts
promptctl list --names      # one name per line (used by shell completions)

search

Search across content, commit messages, and tags.

promptctl search "helpful assistant"
promptctl search prod              # matches tag "prod"

export

Export all versions of a prompt to Markdown.

promptctl export system
promptctl export system > system-history.md

copy

Fork a prompt with its full version history under a new name.

promptctl copy system system-experimental

rename

Rename a prompt. All history moves with it.

promptctl rename system assistant

delete

Delete a prompt and all its versions.

watch

Auto-commit a file whenever it changes on disk. Great for editing prompts in your usual editor and automatically versioning every save.

promptctl watch prompts/system.txt --as system
promptctl watch prompts/system.txt --as system --model claude-3 --interval 2

Flags:

  • --as <name> — the prompt name to commit under (required)
  • --model — tag new versions with this model
  • --interval <seconds> — polling interval (default: 1)

Commit timestamps match the file's modification time, not when promptctl ran.

prune

Keep only the N most recent versions and discard the rest.

promptctl prune system --keep 10

stats

Show a store-wide overview.

Stats:
──────────────────────────────────────────────────
  Prompts:         4
  Total versions:  23
  Total content:   8432 chars
  First commit:    2026-06-01 09:12:00
  Last commit:     2026-06-24 15:30:44
  Most iterated:   system (12 versions)

completion

Print a shell completion script.

# Bash — add to ~/.bashrc
source <(promptctl completion bash)

# Zsh — add to ~/.zshrc
source <(promptctl completion zsh)

# Fish — save to completions directory
promptctl completion fish > ~/.config/fish/completions/promptctl.fish

Completions dynamically suggest prompt names for commands that take a <name> argument.


How It Works

promptctl stores everything in .promptctl/store.json — similar to how .git/ works. The store is discovered from your current directory or any parent, so commands work from any subdirectory.

your-project/
├── .promptctl/
│   └── store.json     ← all prompt versions live here
├── src/
└── ...

Add .promptctl/ to your project's .gitignore to keep prompt history local. If your team wants to share versions in git, track only the store file:

.promptctl/*
!.promptctl/store.json

Reading & Writing Programmatically

Several commands support --json or --raw for scripting:

# Read the latest version of a prompt
promptctl show system --raw

# Pipe the latest content into another tool
promptctl show system --raw | pbcopy

# List prompts as JSON
promptctl list --json

# Ingest output from a script
./generate-prompt.sh | promptctl commit system -m "generated"

Tagging & Model Tracking

# Tag a version for filtering
promptctl commit system -m "production" --tag prod --model claude-opus-4-8

# View only tagged versions
promptctl log system --tag prod

# Find all prompts referencing a tag
promptctl search prod

Why Zero Dependencies?

promptctl uses only Go's standard library — no external packages, no version conflicts, no go mod tidy surprises. One binary, no runtime.


Roadmap

  • Remote sync (S3, GitHub Gist)
  • Side-by-side terminal diff view
  • VS Code extension

Contributing

See CONTRIBUTING.md. PRs welcome — open an issue first for major changes.

git clone https://github.com/naya-ai/promptctl.git
cd promptctl
make test
make build

License

MIT © Shawnaya Williams