{"id":47730945,"url":"https://github.com/nirelbaz/promptpit","last_synced_at":"2026-04-09T11:18:28.827Z","repository":{"id":347602358,"uuid":"1194598908","full_name":"nirelbaz/promptpit","owner":"nirelbaz","description":"Portable AI agent stacks. Collect, install, and share across Claude Code, Cursor, and more.","archived":false,"fork":false,"pushed_at":"2026-04-02T13:44:39.000Z","size":664,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T06:42:37.807Z","etag":null,"topics":["agent","ai","claude-code","cli","cursor","developer-tools","mcp","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nirelbaz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-28T15:19:00.000Z","updated_at":"2026-04-02T13:41:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nirelbaz/promptpit","commit_stats":null,"previous_names":["nirelbaz/promptpit"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/nirelbaz/promptpit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nirelbaz%2Fpromptpit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nirelbaz%2Fpromptpit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nirelbaz%2Fpromptpit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nirelbaz%2Fpromptpit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nirelbaz","download_url":"https://codeload.github.com/nirelbaz/promptpit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nirelbaz%2Fpromptpit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31379452,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T21:40:47.592Z","status":"ssl_error","status_checked_at":"2026-04-03T21:40:05.436Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","ai","claude-code","cli","cursor","developer-tools","mcp","typescript"],"created_at":"2026-04-02T21:31:33.673Z","updated_at":"2026-04-03T22:01:16.848Z","avatar_url":"https://github.com/nirelbaz.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# promptpit\n\n[![npm](https://img.shields.io/npm/v/promptpit)](https://www.npmjs.com/package/promptpit)\n[![license](https://img.shields.io/github/license/nirelbaz/promptpit)](LICENSE)\n\nEvery AI tool has its own config files. pit turns them into one bundle you can share and actually keep track of.\n\n`pit collect` to bundle. `pit install` to write it out for each tool. `pit status` to see what drifted. Commit `.promptpit/` and your team stays in sync.\n\n```sh\npit init           # scaffold a new .promptpit/ stack\npit collect        # bundle your AI config into .promptpit/\npit install        # write it out for each tool\npit status         # see what drifted\npit watch          # live-sync skill changes\npit validate       # check if a stack is well-formed\npit check          # CI integration — verify config is fresh and in sync\n```\n\n## Features\n\n- **Five adapters:** Claude Code, Cursor, Codex CLI, GitHub Copilot, and cross-tool standards (AGENTS.md, .mcp.json). One stack, every tool configured.\n- **Install from any GitHub repo,** even ones that don't use promptpit. pit auto-collects from raw configs.\n- **Skills follow the [Agent Skills](https://agentskills.io) spec,** symlinked or translated per tool (SKILL.md, .mdc, .instructions.md)\n- **Portable rules:** conditional rules in `.promptpit/rules/*.md` with YAML frontmatter, translated per-adapter (Claude Code, Cursor, Copilot)\n- **Portable agents:** custom agent definitions in `.promptpit/agents/*.md`, written natively to Claude Code and Copilot, inlined for other tools\n- **Drift detection:** `pit status` shows what's synced, drifted, or deleted across all adapters, including rules and agents\n- **Dry-run previews:** `--dry-run` on collect and install shows exactly what would change. `--verbose` adds unified diffs.\n- **CI integration:** `pit check` exits non-zero on stale or drifted config. `pit validate` lints your stack before publishing.\n- **MCP handled automatically:** stdio and HTTP remote servers, secrets stripped during collect, per-adapter format translation (JSON, TOML)\n- **Multiple stacks coexist,** re-installs replace cleanly via idempotent markers\n\n## Installation\n\n```sh\nnpm install -g promptpit\n```\n\nOr run directly:\n\n```sh\nnpx promptpit \u003ccommand\u003e\n```\n\n## Usage\n\n### Start a new stack\n\n```sh\npit init\n```\n\nInteractive prompts for name, version, description, and optional files (agent instructions, MCP config, .env.example). Creates a `.promptpit/` directory ready to edit.\n\n### Collect your config\n\n```sh\npit collect\n```\n\nScans for Claude Code, Cursor, Codex CLI, Copilot, and Standards configs, merges them, strips secrets from MCP configs, and writes:\n\n```\n.promptpit/\n├── stack.json          # Manifest (name, version, skills, compatibility)\n├── agent.promptpit.md  # Agent instructions (from CLAUDE.md, .cursorrules, AGENTS.md, etc.)\n├── skills/             # SKILL.md files\n├── rules/              # Conditional rules (globs, alwaysApply)\n├── agents/             # Custom agent definitions (tools, model)\n├── mcp.json            # MCP server configs (secrets replaced with placeholders)\n└── .env.example        # Required environment variables\n```\n\nUse `--dry-run` to preview what would be collected without writing anything. Add `--verbose` for unified diffs.\n\n### Install a stack\n\n```sh\npit install                              # from .promptpit/ in current dir\npit install ./path/to/.promptpit         # from local path\npit install github:user/repo             # from GitHub\npit install github:user/repo@v2.0       # specific tag or branch\npit install github:user/repo --global   # install to user-level paths (~/.claude/, ~/.codex/, etc.)\n```\n\npit detects which AI tools are in your project and writes config in each one's format. If the repo doesn't have a `.promptpit/` bundle, pit auto-collects one from the raw configs it finds. Use `--dry-run` to preview changes before writing.\n\n### Validate and check\n\n```sh\npit validate                # lint your stack before publishing\npit check                   # CI gate — exits non-zero on stale or drifted config\npit check --json            # machine-readable output for CI pipelines\n```\n\n### Team setup\n\nCommit `.promptpit/` to your repo. Teammates run `pit install`, everyone gets the same config.\n\nAdd `.promptpit/` to your AI tool's ignore list so it doesn't scan the raw bundle files. For Claude Code, add `.promptpit` to `ignorePatterns` in `.claude/settings.json`. For Cursor, add it to `.cursorignore`.\n\n## Supported tools\n\n| Tool | Read | Write | Skill format |\n|------|------|-------|--------------|\n| Claude Code | CLAUDE.md, .claude/skills/, .claude/settings.json | Symlinked SKILL.md | skill.md |\n| Cursor | .cursorrules, .cursor/rules/, .cursor/mcp.json | Auto-converted .mdc | mdc |\n| Codex CLI | AGENTS.md, .codex/skills/, .codex/config.toml | Symlinked SKILL.md | skill.md |\n| GitHub Copilot | .github/copilot-instructions.md, .github/instructions/, .vscode/mcp.json | Auto-converted .instructions.md | md |\n| Standards | AGENTS.md, .mcp.json | AGENTS.md + .mcp.json | — |\n\npit writes AGENTS.md (cross-tool standard, read by 60+ tools) and .mcp.json (project-level MCP config) on every install. Copilot MCP goes to .vscode/mcp.json with the `servers` root key and auto-inferred `type` field. Codex MCP is written as TOML to .codex/config.toml.\n\nRules are translated per-adapter: `.claude/rules/*.md` (Claude Code), `.cursor/rules/*.mdc` (Cursor), `.github/instructions/*.instructions.md` (Copilot). Agents are written natively to Claude Code (`.claude/agents/*.md`) and Copilot (`.github/agents/*.agent.md`), and inlined into instructions for tools without native agent support.\n\nSkills are installed to `.agents/skills/` as the canonical location (matching the [Agent Skills](https://agentskills.io) ecosystem convention), then symlinked into tool-native paths. Tools that need different formats (like Cursor's .mdc) get translated copies. Windows falls back to copies when symlinks aren't available.\n\nAdding a new tool is one file plus one registry entry. See [CONTRIBUTING.md](CONTRIBUTING.md) and [ARCHITECTURE.md](ARCHITECTURE.md).\n\n## Security\n\n- MCP config values matching known secret patterns (API keys, tokens, connection strings) are replaced with `${PLACEHOLDER}` during collect. A `.env.example` is auto-generated.\n- All frontmatter is parsed with `js-yaml` JSON_SCHEMA to prevent code execution from untrusted stacks.\n- Dangerous env names (`PATH`, `NODE_OPTIONS`, `LD_PRELOAD`) are blocked during install.\n- Installing MCP servers shows a warning since they run as executables on your machine.\n- GitHub owner/repo/ref inputs are validated against a strict character allowlist.\n\n## Development\n\n```sh\ngit clone https://github.com/nirelbaz/promptpit.git\ncd promptpit\nnpm install\nnpm test          # 395 tests, vitest\nnpm run build     # builds dist/cli.js via tsup\nnpm run lint      # TypeScript strict mode check\n```\n\n## Roadmap\n\nSee [TODOS.md](TODOS.md) for the full roadmap. The big milestones:\n\n- **v0.3 (Team Platform):** Done. Five adapters (Claude Code, Cursor, Codex, Copilot, Standards), seven commands, drift detection, dry-run previews, CI integration, portable rules and agents.\n- **v0.4 (Stack Composer):** Stack composition via `extends` in stack.json, `pit diff`, `pit update`, `pit uninstall`, selective install/collect, AGENTS.md as primary input.\n- **v1.0 (Ecosystem Bridge):** Multi-source install (skills.sh, SkillsMP, cursor.directory), `pit publish`, `pit search`.\n\n## Related\n\n- [Agent Skills](https://agentskills.io) - Open spec for portable AI agent skills\n- [skills.sh](https://skills.sh) - Vercel's skill package manager\n- [gstack](https://github.com/garrytan/gstack) - AI coding skill stack for Claude Code\n- [promptpit-starter](https://github.com/nirelbaz/promptpit-starter) - Starter kit with 7 skills for Claude Code and Cursor\n- [MCP](https://modelcontextprotocol.io/) - Model Context Protocol\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnirelbaz%2Fpromptpit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnirelbaz%2Fpromptpit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnirelbaz%2Fpromptpit/lists"}