project-kit
Everything that happens before the first line of code. project-kit guides you, with an AI agent, through defining a project, deciding its stack and architecture, agreeing how the team works and planning the backlog. It then sets up GitHub and hands the project over to Spec Kit, which specifies and builds each feature.
idea ──▶ brief ──▶ decisions (ADRs) ──▶ workflow ──▶ backlog ──▶ GitHub ──▶ Spec Kit
/pk-discover /pk-decide /pk-workflow /pk-plan /pk-provision /pk-handoff
The conversations run in your AI agent as /pk-… skills: one question at a time, a recommended
answer for each, and everything written to documents in your repository. Every phase ends with
your approval, and every document can be written by hand instead.
Status: alpha. It works end to end on GitHub with Claude Code. Codex, Gemini, Copilot and Cursor get their skills and context files but have not been tried and are started by hand (the levels per agent:
pjkit docs agents). GitLab support is experimental: reading a project was checked against the real gitlab.com API, but creating things (labels, milestones, board, issues) has only been tried against a simulated API. Read the--dry-runbefore applying; what was and was not checked is inpjkit docs provisioning.
Install
uv tool install project-kit-cli # installs the `pjkit` command
uv tool upgrade project-kit-cli # later, to update the program
pjkit doctor # checks git, gh/glab, uv and your PATH
You need uv (it fetches Python 3.12+), git, and an AI agent
(Claude Code is the tested one). For GitHub, gh logged in
with the repo and project scopes; for GitLab, glab; or neither, with --provider none.
The package is called project-kit-cli; the command is pjkit. To try it without installing:
uvx --from project-kit-cli pjkit help.
pjkit not found, or No pyvenv.cfg file. The skills and hooks call pjkit by name, so it
must be on the PATH of the terminal that starts your agent. Install it with uv tool install
(not inside a project's virtual environment) and run uv tool update-shell once. pjkit doctor
points at the cause.
Quick start
cd my-project
pjkit init # copies the skills and templates, then offers to open Claude Code on /pk-start
pjkit status # where you are and what comes next, at any time
/pk-start asks whether to only initialise or to start defining the project now, and after every
phase it asks whether to continue or stop. You can leave at any point and come back later. You
never have to know which skill fits: open your agent and say what you want in your own words
("continue", "I already have a PRD", "the scope changed").
New here? Read the guides, which ship with the program (in Spanish):
| Guide | What it is |
|---|---|
pjkit docs quickstart |
From zero to the first approved phase in 5 minutes, with and without GitHub |
pjkit docs example |
A finished project, file by file, with comments |
pjkit docs session |
A real, unedited conversation with Claude Code, from /pk-start to the decisions |
pjkit docs flow |
The whole flow in detail: phases, existing documents, quick mode, verification |
The phases
| # | Skill | Produces |
|---|---|---|
| 0 | /pk-start |
.project-kit/ |
| 1 | /pk-discover |
docs/project/brief.md |
| 2 | /pk-decide |
docs/adr/*.md |
| 3 | /pk-workflow |
docs/development-workflow.md |
| 4 | /pk-foundations |
docs/project/standards.md, testing.md, security.md, documentation.md |
| 5 | /pk-plan |
docs/project/roadmap.md, .project-kit/backlog.json |
| 6 | /pk-provision |
milestones, labels, branches, the Project and the issues (skipped with --provider none) |
| 7 | /pk-handoff |
the Spec Kit constitution input; CLAUDE.md / AGENTS.md / GEMINI.md |
Outside the sequence: /pk-next (runs the sequence for you), /pk-grill (hard questions and
contradictions, offered before each approval), /pk-import (start from existing documents),
/pk-skills, /pk-amend, /pk-verify and /pk-quiet (runs long commands and reads long logs
through pjkit run, logs and peek so that only what failed reaches the AI; it pays off with
long output, see pjkit docs quiet). Each phase ends with pjkit approve <phase>, which only
you run. A small project can skip three phases with pjkit init --mode quick.
Commands
| Command | What it does |
|---|---|
pjkit init |
Install the skills, templates and workflow in the current directory |
pjkit status / pjkit next |
The phases and what comes next / what to tell your AI |
pjkit approve <phase> |
Record your sign-off of a phase |
pjkit backlog validate |
Validate .project-kit/backlog.json |
pjkit provision [--dry-run] |
Create milestones, branches, the Project and issues on GitHub |
pjkit handoff [--install-speckit] |
Generate the Spec Kit constitution input |
pjkit import <path> |
Copy existing documentation to docs/sources/ for /pk-import |
pjkit trace |
Which issues have a spec, a decision and a test, and what is not linked |
pjkit upgrade [--apply] |
Update the skills and templates a project already has |
pjkit update [--check] |
Update project-kit itself (the status bar says update available; PJKIT_NO_UPDATE_CHECK=1 turns that off) |
pjkit uninstall [--apply] [--purge] |
Undo init: remove what project-kit installed and you did not edit |
pjkit run -- <command> |
Run a command and print a small report instead of all its output (logs, peek and stats go with it) |
pjkit mode [quick|full] |
Show or change how many phases the project goes through |
pjkit context |
Write or refresh the project block in CLAUDE.md / AGENTS.md / GEMINI.md |
pjkit skills list|show|mark |
Recommended third-party skills and what the project decided |
pjkit statusline [--install] |
A line for Claude Code's status bar: model, context, limits, project phase |
pjkit hook install|remove |
Tell Claude Code the project's state at the start of each session |
pjkit docs [topic] |
The guides |
pjkit doctor / pjkit help |
Check the tools / a visual guide |
Useful init options: --from <path>, --mode quick|full, --no-context, --project-name,
--language (of the generated documents), --agents claude,codex,..., --agent claude|none,
--provider github|gitlab|none and --ai-coauthor keep|remove.
What it adds to your repository
.project-kit/ config.yml, state.json, workflow.yml, templates/, handoff/
.claude/skills/pk-*/ the skills (.agents/skills for the other agents)
docs/project/ brief.md, roadmap.md (created by the phases)
docs/adr/ one file per decision (created by the phases)
.githooks/commit-msg only if you removed the AI co-author
init never overwrites a file, so it is safe in a repository that already has code. A new
version of the program does not change an existing project: pjkit upgrade shows what is out of
date and pjkit upgrade --apply brings it up to date without touching what you edited.
Documentation
pjkit docs lists every guide: quickstart, example, session, flow, quiet, upgrade,
provisioning, handoff, backlog-schema, skills, statusline and agents.
License
MIT.
Metadata
Release files for project-kit-cli 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| project_kit_cli-1.0.1.tar.gz | 183.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| project_kit_cli-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 413.3 kB
Release files / project_kit_cli-1.0.1.tar.gz
| Download URL | project_kit_cli-1.0.1.tar.gz |
|---|---|
| Size | 183.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
38ee4ca30142599b86d1dc49e213b68eb7dd1bda37020920bbcd6d3a94a47bd2
|
|
BLAKE2b-256 checksum How to use checksums |
652e878f5ce848bc8fd77de0a85cb5228a221ca2e61c023448496630e8b5617b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.3 {"installer":{"name":"uv","version":"0.13.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / project_kit_cli-1.0.1-py3-none-any.whl
| Download URL | project_kit_cli-1.0.1-py3-none-any.whl |
|---|---|
| Size | 229.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9b08fbdd8372333ecfbe75d1d227121e84be6763fe86ac12b95cfb2dc4638661
|
|
BLAKE2b-256 checksum How to use checksums |
f6eea5f647a04c94da676609d5c1b6a5d0470701797f4062c78f05045fd88335
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.3 {"installer":{"name":"uv","version":"0.13.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for project-kit-cli 1.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.