Skip to main content

Packages — Overview

Packages are opinionated bundles of skills. Pick one tier as your starting point, then add or remove skills through your installer or local package metadata when you need a narrower context.

The five tiers

PackageExtendsBest for
minimalSolo developers, side projects, early-stage experiments
managedminimalSmall teams who want a shared backlog and cadence rituals
softwaremanagedEngineering teams building production software systems
researchmanagedData science, ML, and research-heavy projects
productsoftwareFull product teams: engineering + design + product ops

managed is the recommended default. Start there and add skills as needed rather than starting with software or product.

What each tier adds

Each tier is cumulative — higher tiers include everything below them.

TierKey additions over the tier below
minimalBacklog (WorkItem), event-log, actor-profile, git-workflow, debugging, testing-strategy, error-handling
managedRoles, decisions (DecisionRecord), scopes, standup, session-handover, retrospective, release-semver, code-review, refactoring, TDD, documentation, dependency-management
softwareArchitecture, API design, databases, infrastructure (Docker, k8s, Terraform), security (OWASP, auth), observability, performance
researchData science, data pipeline, data quality, feature engineering, pandas/polars, RAG, ML pipeline, prompt engineering, LaTeX, infographics
productFrontend design, mobile design, logo design, FastAPI, TypeScript, Flutter, Tailwind, Reflex, SEO, PRD writing, user research

How composition works

Packages compose via spec.extends. The effective skill set of a package is the union of its parent(s)' effective skill sets plus its own includes.skills. Cycles are not allowed.

minimal ── managed ── software ── product
└─ research

Using a package

When installing manually, select a package by copying the shipped context and then enabling the tier through your own harness or installer configuration. Managed installers can expose this directly. For example, aibox uses:

# aibox.toml
[processkit]
source = "https://github.com/projectious-work/processkit.git"
version = "v0.25.1"

[context]
packages = ["software"]

Creating a project package

For deeper customization, create your own package file under context/packages/:

---
apiVersion: processkit.projectious.work/v1
kind: Package
metadata:
id: PKG-my-team
name: my-team
version: "1.0.0"
spec:
description: "Custom bundle for my team."
extends: [managed]
includes:
skills:
- rust-conventions
- auth-patterns
- logging-strategy
---

then reference it from your installer or package selection config:

[context]
packages = ["my-team"]

Source files

Each tier is defined in a YAML file in src/.processkit/packages/: minimal.yaml, managed.yaml, software.yaml, research.yaml, product.yaml. The YAML is the source of truth; these docs pages summarize the intent.

Why packages are standalone

processkit packages are content, not environment machinery:

  • Reusable content. The skills, schemas, and MCP servers in processkit work with any compatible agent harness or MCP client. They are not tied to a specific devcontainer implementation.
  • Forkable catalog. Organisations can maintain a private fork of processkit with custom skills, schemas, and MCP servers. That fork is consumable by any installer that can copy the release files and launch the MCP commands.
  • Independent release cadence. Content (skills, primitives) changes more frequently than infrastructure. Keeping packages in processkit lets users update process content without changing their harness.