Thanks for helping improve Progressive Intent Engineering.
This repository contains:
- the PIE framework documentation;
- examples for learning and adoption;
- a Claude Code plugin that operationalizes PIE through skills, slash commands, templates, and export adapters;
- a Codex
AGENTS.mdtemplate for prompt-driven PIE workflows.
PIE is intentionally framework-neutral. Tool integrations should help agents produce durable intent artifacts and downstream seeds without absorbing downstream delivery frameworks.
docs/
framework-specification.md # definitive framework specification
claude-code-command-reference.md # Claude Code command model
codex-guide.md # Codex usage guide
greenfield-example.md
brownfield-example.md
plugins/claude-code/pie/
.claude-plugin/plugin.json
README.md
commands/
adapters/
skills/
plugins/templates/
claude-code/
AGENTS.md
CLAUDE.md
codex/
AGENTS.md
.claude-plugin/marketplace.json
Claude Code marketplace definition.
This repository is documentation and plugin metadata. It has no runtime language dependency and no package installation step is required.
Use ordinary shell tools for validation. If future changes add generated assets or tooling, document those requirements here and keep them minimal.
- Keep the main introduction approachable.
- Put detailed framework semantics in
docs/framework-specification.md. - Put Claude Code command semantics in
docs/claude-code-command-reference.md. - Put Codex prompt workflow guidance in
docs/codex-guide.mdandplugins/templates/codex/AGENTS.md. - Prefer durable artifact behavior over chat-memory assumptions.
- Keep
docs/pie/project.mdas project-level context, not an intent or delivery artifact. - Treat
project.md,intent.md,spike.md, baseline files, ask records, and export seeds as authoritative;index.mdis derived. - Keep active intent and active spike session-local, not in shared durable state.
- Assess intents against the Project Goal before delivery.
- Define material ambiguity by whether different answers would produce a meaningfully different Delivery Baseline.
- Do not add commands that are not part of the canonical PIE command model unless the Claude Code command reference is updated first.
- Keep
/pie:baselineoptional;/pie:implementand/pie:export <adapter>should auto-create or refresh baselines after readiness isreadyor confirmedborderline. - Keep
/pie:decisionas manual record/affirm/reject/override. Explicit clarification answers should auto-trigger Convergence; inferred or project-shifting decisions require confirmation. - Keep
/pie:distillfor spike findings, long or branched discovery, accumulated evidence, or explicit checkpoints.
The Claude Code plugin currently supports:
/pie:init
/pie:project
/pie:intent
/pie:spike
/pie:distill
/pie:decision
/pie:implement
/pie:export
/pie:feedback
/pie:baseline
Do not reintroduce removed aliases such as /pie:assess, /pie:discover, /pie:converge, /pie:status, /pie:export-speckit, or /pie:export-lid.
Command files live in:
plugins/claude-code/pie/commands/
Each command file must:
- be Markdown;
- start with frontmatter;
- include a
description; - describe durable artifact updates;
- avoid relying on chat history as the source of truth.
After changing commands, update:
- plugins/claude-code/pie/README.md
- plugins/templates/claude-code/AGENTS.md
- plugins/templates/claude-code/CLAUDE.md, if command names changed
- docs/claude-code-command-reference.md
- relevant examples in docs/
Adapter specs live in:
plugins/claude-code/pie/adapters/
An adapter should:
- read from the immutable baseline revision under
docs/pie/<intent>/baselines/; - write under
docs/pie/<intent>/exports/; - repair the derived
docs/pie/index.md; - preserve the PIE Origin block with intent ID, baseline ID, and ask ID;
- produce a downstream seed, not a full downstream workflow;
- stop and reopen PIE if export reveals delivery-critical missing intent.
After adding an adapter, update /pie:export, plugin docs, templates, command reference, and examples.
Before publishing or opening a pull request:
node -e "JSON.parse(require('fs').readFileSync('.claude-plugin/marketplace.json','utf8')); JSON.parse(require('fs').readFileSync('plugins/claude-code/pie/.claude-plugin/plugin.json','utf8'));"Also check:
- command files have frontmatter descriptions;
- obsolete command names are not referenced outside this file;
- examples use the current command model;
- plugin metadata versions match;
- any new tooling requirements are documented in this file.
- Open an issue or discussion for substantial framework or command-model changes.
- Keep pull requests focused.
- Update examples when behavior changes.
- Explain whether a change affects framework semantics, plugin behavior, or documentation only.
- Run the validation checklist before submitting.
When cutting a release:
- Update
.claude-plugin/marketplace.json. - Update
plugins/claude-code/pie/.claude-plugin/plugin.json. - Update plugin and root README files if installation, commands, or adapters changed.
- Confirm examples still match the released command model.