Project Kit is primarily a Codex skill for teams that want a disciplined, human-led AI-assisted workflow.
It is intentionally not a vibe-coding starter: the main goal is to let you describe a project in simple language and have Codex turn that into durable repository context, while humans stay responsible for scope, architecture, and review.
The baseline expects a dedicated features.md up front as the single product-facing source of truth for features.
Using Project Kit as a skill is the recommended workflow because it adds guided reasoning before files are generated. You can describe goals, features, architecture, constraints, and stack in plain language, and Codex can turn that into:
README.mdAGENTS.mdCODE_STYLE.mdCONTRIBUTING.mdCHANGELOG.md.project/overview.md.project/features.md.project/architecture.md.project/decisions.md- optional
.project/design/README.md
The standalone scaffold script is still useful, but it is secondary. It creates the baseline quickly, then you still need to manually refine the generated files.
Project Kit is a standard Codex skill directory: the repository root already contains SKILL.md plus the optional support files under agents/, scripts/, and assets/.
There are currently two paths you may encounter in real Codex setups:
~/.codex/skillsThis is the user-level skill location used by some Codex app installations. The local macOS environment used for this repository currently has skills installed there..agents/skillsThis is the path documented in the current Agent Skills docs for repository, user, and admin discovery.
OpenAI currently documents these .agents/skills discovery locations:
- repository-scoped:
.agents/skillsfrom the current working directory up to the repository root; - user-scoped:
$HOME/.agents/skills; - admin-scoped:
/etc/codex/skills.
Codex also supports symlinked skill folders. For practical setup, use whichever root your Codex installation already uses:
- if you already have
~/.codex/skills, install Project Kit there to stay consistent with your local app setup; - if you want the path that matches the current Agent Skills docs and also works well for repo-scoped sharing, use
.agents/skills.
mkdir -p "$HOME/.codex/skills"
ln -s "/absolute/path/to/project-kit" "$HOME/.codex/skills/project-kit"mkdir -p "$HOME/.agents/skills"
ln -s "/absolute/path/to/project-kit" "$HOME/.agents/skills/project-kit"Use a junction as the default because it works well for directory links without depending on Developer Mode or elevated symlink privileges.
New-Item -ItemType Directory -Force -Path "$HOME\.codex\skills" | Out-Null
New-Item -ItemType Junction -Path "$HOME\.codex\skills\project-kit" -Target "C:\absolute\path\to\project-kit"Use a junction as the default because it works well for directory links without depending on Developer Mode or elevated symlink privileges.
New-Item -ItemType Directory -Force -Path "$HOME\.agents\skills" | Out-Null
New-Item -ItemType Junction -Path "$HOME\.agents\skills\project-kit" -Target "C:\absolute\path\to\project-kit"If Developer Mode is enabled or you are running PowerShell as administrator, you can use -ItemType SymbolicLink instead of Junction.
If you run Codex inside WSL, install the skill inside the Linux home seen by WSL rather than inside the Windows profile. Match the root that your WSL Codex install already uses:
mkdir -p "$HOME/.codex/skills"
ln -s "/home/your-user/path/to/project-kit" "$HOME/.codex/skills/project-kit"or:
mkdir -p "$HOME/.agents/skills"
ln -s "/home/your-user/path/to/project-kit" "$HOME/.agents/skills/project-kit"Prefer keeping both the repository and the skill under WSL paths such as ~/code/... instead of /mnt/c/..., because the Codex Windows guidance explicitly calls out fewer symlink and filesystem issues there.
If your Codex installation uses newer skill management features, use the official docs below as the source of truth.
Read these first if you want to understand how Codex skills behave and where they fit:
- Agent Skills docs
- Get started with Codex
- Using Codex with your ChatGPT plan
- Introducing the Codex app
- This skill definition in
SKILL.md
Why these links:
- the Agent Skills docs explain what a skill is, how explicit and implicit invocation work, and how skills are structured;
- the Codex getting started pages explain the product surfaces and setup flow;
- the local
SKILL.mdexplains the operating model specific to Project Kit.
Use Project Kit through Codex whenever you want the repository structure to come from a guided conversation rather than from raw file generation.
- For a user-wide install, link the repository into the root your Codex setup already uses: usually
$HOME/.codex/skills/project-kitor$HOME/.agents/skills/project-kit. - For a repo-scoped install, link it into
.agents/skills/project-kitinside one target repository. - If the skill does not appear automatically, restart Codex.
- Use an empty folder for a new project.
- Use an existing repository when you want to align it.
- If you already know the basic project metadata, copy project-config.sample.json to
project-config.json. - If the repository includes user-facing UI, add
"designContext": trueso the scaffold also creates a place for mockups, annotated asset pairs, and optional design links. - If you do not have it yet, describe the project in natural language directly to Codex.
Use prompts like:
Use $project-kit to init a new TypeScript backend for a billing API.
Use $project-kit to align this existing React repository.
Use $project-kit to align this existing React repository and include design context for Figma mockups.
This is the critical part. Tell Codex things like:
- what the project does;
- the main user-facing or operator-facing features;
- what is in scope and out of scope;
- the main modules or services;
- the integrations;
- the constraints;
- the stack;
- what must be tested;
- whether there are exported screens, screenshots, Figma files, or prototype links;
- whether annotated mockups follow a
name.ext+name.annotated.extconvention; - what the team wants agents to do or avoid.
That plain-language description is what Project Kit turns into durable documentation.
Project Kit can scaffold the structure, but it should not be treated as final truth. Review the generated files immediately and remove placeholders or assumptions that are not accurate.
Even when the skill is used correctly, these files need human editing.
-
AGENTS.mdUse this file to define how agents should work inside the repository. Add the real read order, review expectations, trust boundaries, testing expectations, documentation rules, and anything agents must never do. This is where you translate team process into actionable guardrails for AI-assisted work. -
CHANGELOG.mdUse this file to track meaningful repository changes. Keep the initial scaffold entry, then add entries for changes that affect behavior, workflow, security, developer experience, or release history. Avoid turning it into a commit log. Codex is instructed to only add entries for meaningful changes made by agents. -
CODE_STYLE.mdThis is where you record coding conventions that are not already enforced by automated linters or formatters. It is used as a reference for both humans and agents, so it should be concise and high signal. -
.project/overview.mdUse this file as the product truth. Write a short goal statement, define what is in scope and out of scope, list the few behaviors that are critical enough to deserve unit tests, and record the constraints that shape delivery. Good content here is stable and product-facing. Do not copy interfaces, schemas, routes, code structure, TODO lists, or speculative roadmap ideas into this file. -
.project/features.mdUse this file as the stable feature inventory. For each feature, capture a short summary plus what is in scope and out of scope. Keep it product-facing and avoid copying interfaces, schemas, routes, payload examples, or implementation structure. -
.project/architecture.mdUse this file as the technical map of the repository. Describe the main modules, execution entry points, trust boundaries, persistence layer, external integrations, and any architectural constraints that future changes must respect. Keep it high signal: explain how the system is shaped, not every implementation detail. -
.project/decisions.mdUse this as an append-only log of durable decisions. Each entry should explain what was decided, why the decision was needed, and what tradeoffs or consequences it created. Only record decisions that future contributors will need to understand later. Do not leave placeholder headings or fake entries. -
.project/design/README.mdUse this file only when the repository has user-facing UI or the user provides mockups. Use it to document the asset-pair convention and optional external design links. The default convention isname.extplusname.annotated.ext, where the.annotatedfile contains arrows, notes, or labels that are not part of the final UI. If the annotated mockup uses only numeric callouts, pair it withname.annotations.mdand explain each number there. Codex can infer local control meaning well from annotated pairs, but multi-screen flows still need explicit notes when they are not obvious.
initBootstrap a new repository with the minimal durable baseline.alignInspect an existing repository and add only the missing high-value files. Reuse the existing.project/features.mdwhen it already captures the feature inventory; otherwise provide the high-level features explicitly.
init expects this metadata shape:
{
"projectName": "project-kit",
"description": "Lean baseline for human-led, AI-assisted development",
"primaryLanguage": "TypeScript",
"stack": ["TypeScript", "React"],
"features": ["User authentication", "Usage reporting"],
"designContext": true,
"initGit": true
}Required fields:
projectNamedescriptionprimaryLanguagestackfeatures
Optional fields:
designContextdefaults tofalseinitGitdefaults tofalse
Version is not part of the init contract:
- new repositories start at
0.1.0 alignreuses the version already present in the root manifest when available--project-versionis intentionally not supported
Use the standalone scaffold only when you want a fast file baseline without the conversational workflow.
node ./bin/project-kit-scaffold.js --mode init --target /absolute/path/to/repo --meta ./project-config.sample.jsonFor UI-heavy projects, add --design-context to scaffold .project/design/ as well.
The lightweight convention is to store paired assets like editor.png and editor.annotated.png.
If the overlay only contains numeric callouts, add editor.annotations.md.
This path is useful when:
- you already know the target structure;
- you want to generate files quickly from metadata;
- you are comfortable editing
.project/manually afterward.
This path is weaker than the skill workflow because the user still has to manually correct and complete the generated context.
npm testThe test suite covers the public CLI, automatic project-config.json loading, and alignment behavior on existing repositories.