Routine reporting as a byproduct of normal work
project-state is an operational substrate for multi-stakeholder projects. 19 skills and 5 compliance packs turn any project — grant-funded, client-facing, board-reported, or open-source — into a system where status reports, meeting packs, and funder claims write themselves from the state you already maintain.
The problem
Every multi-stakeholder project has the same reporting overhead: weekly status emails, quarterly claims, steering committee packs, board updates, funder reports. The Project Lead writes them by hand, pulling from scattered spreadsheets, email threads, and half-remembered conversations. It takes hours per week and the reports are always slightly stale.
project-state eliminates this by making the state the source of truth. Update a milestone, log a decision, flag a risk — the reports generate themselves from what you already captured.
How it works
Substrate
A typed filesystem (.project-state/) on any shared drive. Plain YAML, JSON, NDJSON, and markdown. No database, no API, no vendor lock-in. File-per-entity with append-only activity logs.
Skills
19 project-* skills that read and write the substrate. Each skill is one coherent job — milestones, reports, meetings, notifications. You talk to Claude; the skills do the work.
Reporting Matrix
A single YAML that encodes "for each stakeholder, what report at what cadence in what format on which surface." The orchestrator reads it and dispatches generators automatically.
Compliance Packs
Pack-specific behavior lives in YAML profiles, not code. The pic-pcais pack knows PIC rules; the board-investor pack knows board cadence. Load one or many.
Surfaces
Reports land where your stakeholders live: Slack (auto-post), Gmail (always draft — never auto-send), Google Calendar, scsiwyg blog, or a static project website.
Phase Presets
Five lifecycle models out of the box: grant, agile, waterfall, client-engagement, open-source. Define your own with custom gates and transitions.
Architecture
SURFACES ──── Slack · Gmail (drafts) · Calendar · Blog · Website
▲
SKILLS ────── 19 project-* skills (12 unchanged + 6 profile-driven)
│ │
│ reads profiles from
│ ▼
PACKS ─────── pic-pcais · client-services · board-investor
agile-default · open-source-community
│ │
│ seeds entries into
│ ▼
MATRIX ────── reporting-matrix.yaml
"who needs what, when, where"
│
SUBSTRATE ─── .project-state/ on shared drive
YAML · JSON · NDJSON · Markdown19 skills
Each skill is a markdown-defined agent behavior. Install once, use across all your projects.
5 compliance packs
Packs configure skill behavior for specific project types. Multiple packs can coexist on one project.
Quick start
Download and unzip
cd /path/to/your-project unzip project-state.zip
Symlink the 19 skills
cd ~/.claude/skills for s in /path/to/project-state/skills/project-*; do ln -s "$s" . done
Bootstrap your project
ask claude: "scaffold a new v2 project"
Verify
ask claude: "what phase are we in?" ask claude: "show the reporting matrix"
What you can ask
Once installed, these natural-language requests trigger the right skill automatically.
This project runs on itself
project-state uses its own substrate to track its roadmap, risks, and reports.
Get started
Download the zip, symlink the skills, scaffold your project. The substrate is plain files — if you stop using the skills, your data stays readable forever.