Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "cdev",
"displayName": "CDev — Continuous Development",
"version": "0.1.1",
"description": "Run coding agents unattended over weeks: the repository holds the plan, the state and the proof. One conditioning skill and one execution loop reading role profiles, planners, a plain-language explainer, and an optional multi-repo orchestration layer.",
"version": "0.2.0",
"description": "Run coding agents unattended over weeks: the repository holds the plan, the state and the proof. One conditioning skill and one execution loop reading role profiles, planners, status readers, a plain-language explainer, and an optional multi-repo orchestration layer.",
"author": {
"name": "elmayii"
},
Expand Down
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,32 @@ All notable changes to the CDev plugin are documented here. The format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow semver. Installed
copies update only when the version changes.

## [0.2.0] — 2026-09-19

### Added

- **`cdev-status`** — a read-only reading of where a sprint stands, on three axes: functional
requirements, non-functional requirements, user stories. Engineered **at read time** from
the raw chain sprint → batch → handoff (plus decisions and git); the plan holds no
requirement list to maintain. Every item cites its source; percentages are estimates and
say so; `since <batch|date|commit>` adds a delta from git history, nothing persisted; an
axis the repository does not support reads "not derivable". Edits nothing, marks nothing.
- **`cdev-monorepo-status`** — the same three-axis reading for a SYSTEM sprint across its
repositories. Applies `cdev-status` by reference and adds only what is system-level:
contracts as a source, **local truth** (each repository's own plan and handoff, read in the
repository; workspace↔repo divergence flagged, the repository's state reported; the state
snapshot never decides), and one compact per-repository table.

### Changed

- **Planners close each batch's open decisions with the human before writing it**
(core — [RFC, Discussion #9](https://github.com/elmayii/cdev/discussions/9)). `cdev-planner`
shows the batch grouping, then goes batch by batch: questions with suggested answers and one
recommended → answers recorded → that batch written → next. No open decision, no question.
With no human present, a batch with open decisions is written `BLOCKED` naming each
decision — never `READY`. `cdev-monorepo-planner` applies the same rule by reference, per
SYSTEM_BATCH.

## [0.1.1] — 2026-08-15

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ exactly that material.

## Repository layout

- `skills/` — the seven Claude Code skills (the current host binding).
- `skills/` — the nine Claude Code skills (the current host binding).
- `profiles/` — role profiles: exactly four things each (what "verified" means, what
"evidence" means, the hardest gate, the self-chosen work order). Never a different loop.
- `templates/` — the conditioning render base (`PLACEHOLDERS.md` is the contract).
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,12 @@ Ten-minute worked example: [the walkthrough](docs/community/walkthrough.md).
| `/cdev:bootstrap` | Prepare one repository for CDev |
| `/cdev:cdev-planner` | Turn an objective into executable work, or analyze gaps |
| `/cdev:cdev` | Run continuous development in a conditioned repository |
| `/cdev:cdev-status` | Read where the sprint stands — functional, non-functional, user stories — from the repo alone |
| `/cdev:ockham` | Re-explain dense technical output in plain language |
| `/cdev:bootstrap-monorepo` | Prepare a workspace coordinating several repositories |
| `/cdev:cdev-monorepo-planner` | Plan and analyze work across repositories |
| `/cdev:cdev-monorepo` | Execute coordinated work across conditioned repositories |
| `/cdev:cdev-monorepo-status` | The same reading for a system sprint, across its repositories |

## Which command, when?

Expand All @@ -86,6 +88,7 @@ Ten-minute worked example: [the walkthrough](docs/community/walkthrough.md).
| A repository, not yet prepared for autonomous work | `/cdev:bootstrap` |
| You know the objective; the work is not structured yet | `/cdev:cdev-planner` |
| The plan has executable work | `/cdev:cdev` — it works batch after batch |
| Several batches have run and you want to know where the sprint stands | `/cdev:cdev-status` — read-only, derived when you ask |
| The plan ran out | The loop derives next work itself — only inside what your docs specify |
| Something needs *you* | It stops only for real blockers, and names the exact decision |
| The product spans several repositories | The `*-monorepo` commands — coordination that never takes a repo's autonomy away |
Expand All @@ -110,6 +113,7 @@ because the local plan owns its order. Repositories the change doesn't touch are
/cdev:bootstrap-monorepo # condition the workspace over your repos
/cdev:cdev-monorepo-planner # system objective → real batches in each repo
/cdev:cdev-monorepo # execute, coordinate, verify end to end
/cdev:cdev-monorepo-status # where the system sprint stands, repo by repo
```

The full mechanism, with a backend → frontend worked example:
Expand Down
6 changes: 4 additions & 2 deletions docs/08-installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The plugin root ships four load-bearing directories, and they all travel togethe

| Directory | Role |
|---|---|
| `skills/` | The seven entry points (auto-discovered by the host) |
| `skills/` | The nine entry points (auto-discovered by the host) |
| `profiles/` | The role profiles the loop and the conditioner read |
| `templates/` | The render base for conditioning, with its placeholder contract |
| `scripts/` | The bootstrap verifier and the sandbox fixture builder |
Expand Down Expand Up @@ -42,17 +42,19 @@ complete copy of the plugin root at:

## What you get

Seven skills, namespaced by the plugin name:
Nine skills, namespaced by the plugin name:

| Invocation | What it is |
|---|---|
| `/cdev:bootstrap` | Condition one repository (recognition-first, both halves, human gate) |
| `/cdev:cdev` | The execution loop — dispatcher plus single loop reading the role profiles |
| `/cdev:cdev-planner` | Single-repo planning: materialize an objective, or gap-analyze |
| `/cdev:cdev-status` | Read-only status of a sprint on three axes, derived at read time |
| `/cdev:ockham` | User-invoked plain-language re-telling of dense output |
| `/cdev:bootstrap-monorepo` | Condition a multi-repo workspace (never touches the children) |
| `/cdev:cdev-monorepo` | The orchestrating loop over conditioned repositories |
| `/cdev:cdev-monorepo-planner` | Cross-repo planning and gap analysis |
| `/cdev:cdev-monorepo-status` | Read-only status of a SYSTEM sprint across its repositories |

The namespace is the point: un-namespaced copies in `~/.claude/skills` collide with anything
sharing a name; `cdev:*` cannot.
Expand Down
4 changes: 4 additions & 0 deletions docs/09-cdev-monorepo.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,10 @@ Independent references in different repositories may run in parallel. Work insid
repository remains sequential, because its local plan owns the order. Repositories that are not
referenced by the current system batch are not opened and do not block it.

At any point, `/cdev:cdev-monorepo-status` gives a read-only reading of where the system sprint
stands: functional requirements, non-functional requirements and user stories at system
level, then one line per repository — each repository's state read in the repository itself.

### 5. Exchange durable handoffs

Repositories do not communicate through an agent's conversational memory. A producer publishes
Expand Down
3 changes: 2 additions & 1 deletion docs/community/rfc-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ rules) gets proposed and decided.

1. **Open a Discussion in the RFC category.** State: the rule you want to change or add, the
recorded incident(s) that motivate it (link field reports — yours or others'), and the
smallest version of the change.
smallest version of the change. *Interim rule: until an RFC category exists (categories
are created by hand in the web UI), open it in **Ideas** with the title prefixed `[RFC]`.*
2. **Evidence bar:** the method's own precedent (docs/07 §6) — every core rule added so far
traces to a specific recorded failure. "It would be cleaner" does not clear the bar;
"here is the handoff entry where this broke" does.
Expand Down
8 changes: 8 additions & 0 deletions docs/develop/AGENT_EXECUTION_PROTOCOL.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,14 @@ Run per batch, in order; record pass / fail / not-run per check in the handoff:
4. **Sandbox exercise** — for every touched skill: build a fixture with `scripts/sandbox.ps1`,
have a fresh subagent follow the skill against a scripted scenario, record the outcome. A
skill change without a sandbox exercise is `not-run`, and the batch is not `DONE`.
*Multi-repo skills:* `sandbox.ps1` builds single repositories only. While no workspace
fixture exists, a **recorded field exercise** stands in for the sandbox exercise of a
multi-repo skill: the branch loaded with `claude --plugin-dir`, run either by the human in
their own workspace, or — when the human asks — by the agent on **local clones** of that
workspace (never the real trees: clones outside this repository, `origin` removed, deleted
afterwards), with the human judging what only they can. Outcome written into the handoff,
anonymized; the sandbox check is recorded `not-run` with that reason (human decisions,
DECISIONS 2026-09-19 and 2026-09-20).

## Branches and commits

Expand Down
Loading
Loading