Sustainable, Spec-Driven Development (SDD) for human-AI teams
Project description
Cicadas
Version 0.6.1
Sustainable, Spec-Driven Development (SDD) for human-AI teams.
Cicadas reverses the traditional relationship between code and documentation. Instead of fighting to keep specifications in sync with code, Cicadas treats forward-looking docs (PRDs, plans) as disposable inputs that drive implementation and then expire. Authoritative system documentation is then reverse-engineered from the code itself into canonical snapshots.
The Core Concept
- Active Specs are Disposable: PRDs, designs, and task lists drive implementation but expire when the initiative completes.
- Code is Truth: The codebase is the only source of truth.
- Work is Coordinated: Parallel initiatives and features are registered in a registry, allowing parallel work efforts to minimize overlap and clashes.
- Canon is Synthesized: Authoritative documentation (
canon/) is generated from the code + the intent of expired specs. It is never manually maintained. - Reflect & Signal: During development, we keep specs honest via Reflect (updating active specs to match code reality) and coordinate via Signal (broadcasting breaking changes to peer branches).
Getting Started
Installation
Option 1: Install from PyPI (Recommended)
Install Cicadas as a Python package:
pip install cicadas
This installs the cicadas CLI command. Initialize Cicadas in your project:
cd your-project
cicadas init
Option 2: Install Script (with Agent Integration)
One-liner (requires Python 3.11+ and git):
curl -fsSL https://raw.githubusercontent.com/ecodan/cicadas/master/install.sh | bash
This downloads Cicadas into .cicadas-skill/cicadas/, initializes the .cicadas/ workspace, and optionally sets up agent integrations. Lifecycle commands use the bundled CLI entry point python .cicadas-skill/cicadas/scripts/cli.py (same subcommands as the cicadas command from pip); optionally pip install cicadas to put cicadas on your PATH.
With agent integration:
# Claude Code
curl -fsSL https://raw.githubusercontent.com/ecodan/cicadas/master/install.sh | bash -s -- --agent claude-code
# Cursor
curl -fsSL https://raw.githubusercontent.com/ecodan/cicadas/master/install.sh | bash -s -- --agent cursor
# Rovodev
curl -fsSL https://raw.githubusercontent.com/ecodan/cicadas/master/install.sh | bash -s -- --agent rovodev
# Multiple agents
curl -fsSL https://raw.githubusercontent.com/ecodan/cicadas/master/install.sh | bash -s -- --agent claude-code,cursor
Custom install directory:
bash install.sh --dir tools/cicadas --agent claude-code
Update Cicadas files (preserves your .cicadas/ workspace):
bash install.sh --update
Supported agents:
| Agent | Integration |
|---|---|
claude-code |
.claude/skills/cicadas symlink (uses project CLAUDE.md if present) |
antigravity |
.agents/skills/cicadas symlink |
cursor |
.cursor/rules/cicadas.mdc (copy of SKILL.md; guardrails are in the skill) |
rovodev |
.rovodev/skills/cicadas symlink |
none |
Skip; configure manually |
Requirements: Python 3.11+, curl, unzip, git
The Workflow
Phase 1: Emergence (Drafting)
When you start an initiative, tweak, bug, or skill, the agent runs a standard start flow first (name → draft folder → Building on AI? (yes/no; if yes, eval status) → requirements source/pace for initiatives → publish destination for skills → PR preference), then drafts specs. For work that builds on AI, the agent may later offer an eval spec (initiatives) or an eval/benchmark reminder (tweaks/bugs); Cicadas does not run evals. We draft specifications in .cicadas/drafts/ using specialized instruction modules (Clarify, UX, Tech, Approach, Tasks, Skill Create). Clarify can be driven by Q&A, a requirements doc (drafts/{initiative}/requirements.md), or a Loom transcript (drafts/{initiative}/loom.md).
- Key Artifact:
approach.mddefines the partitions (feature branches).
Phase 2: Kickoff
We promote drafts to Active Specs and register the initiative.
- Command:
cicadas kickoff {name} --intent "..."(orpython {cicadas-dir}/scripts/cli.py kickoff …when using a copied skill tree) - Result: Creates
initiative/{name}branch and.cicadas/active/{name}/.
Phase 3: Execution (The Dual Loop)
Work happens in Feature Branches (registered) and Task Branches (ephemeral).
- Start Feature:
cicadas branch {feature} --intent "..." --modules "…" --initiative {name} - Reflect: When code implementation diverges from the plan, we update the active specs immediately (and before every commit on feat/task branches).
- Code Review (optional): After Reflect; before committing on feature branches; before opening a PR or merging. The agent evaluates the diff against specs, security, correctness, and quality — producing a structured
review.mdartifact with aPASS/PASS WITH NOTES/BLOCKverdict.cicadas open-prchecks this verdict and blocks onBLOCK. - Signal: If a change affects other branches, we broadcast it:
cicadas signal "..."
Phase 4: Completion (Synthesis)
When all features are merged into the initiative branch, we merge to main and then:
- Synthesize Canon: An AI agent reads the code on
main+ the active specs and generates fresh documentation in.cicadas/canon/(includingcanon/summary.md— a 300–500 token snapshot used to inject context at branch start). - Archive: Active specs are moved to
.cicadas/archive/.
Quick command reference
Use the cicadas CLI (pip install cicadas) or, for a tree copied by install.sh, python {cicadas-dir}/scripts/cli.py with the same subcommands — one entry point instead of per-script paths.
| Action | Command |
|---|---|
| Init | cicadas init |
| Kickoff Initiative | cicadas kickoff {name} --intent "..." |
| Start Feature | cicadas branch {name} --intent "..." --modules "…" --initiative {name} |
| Check Status | cicadas status (shows Merged/Next when lifecycle exists) |
| Check Conflicts | cicadas check |
| Send Signal | cicadas signal "Message..." |
| Log Work | cicadas update-index --branch {name} --summary "..." |
| Lifecycle | cicadas lifecycle {name} (PR boundaries + steps in drafts/active; use --no-pr-* / --pr-* as needed) |
| Open PR | cicadas open-pr [--base branch] (gh/glab/Bitbucket/fallback; blocks on BLOCK verdict) |
| Check Review | cicadas review [--initiative name] (read verdict from review.md) |
| Archive | cicadas archive {name} [--type branch|initiative] |
| Prune | cicadas prune {name} --type branch|initiative |
| Abort | cicadas abort |
| Project History | cicadas history [--output path] |
| Validate Skill | cicadas validate-skill {slug} |
| Publish Skill | cicadas publish-skill {slug} [--publish-dir DIR] [--symlink] [--force] |
| Refresh wiki nav | cicadas refresh-wiki |
Project Structure
The Cicadas toolset manages the .cicadas/ directory:
.
├── src/
│ └── cicadas/ # The Cicadas orchestrator (scripts & agents)
└── .cicadas/
├── canon/ # Authoritative, generated checks
│ ├── product-overview.md
│ ├── tech-overview.md
│ └── modules/ # Module-level snapshots
├── active/ # Live specs for in-flight initiatives
├── drafts/ # Staging area for new initiatives
├── archive/ # Expired specs (historical record)
└── registry.json # Active initiatives & branch registry
Additional Resources
For the full methodology specification, see:
📘 Cicadas Method Specification
For a comparison of the Cicadas Method to other approaches, see:
License
Cicadas is licensed under the Apache License 2.0. Copyright 2026 Cicadas Contributors
This product includes software developed by Dan and contributors.
Copyright 2026 Cicadas Contributors SPDX-License-Identifier: Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aprovan_cicadas-0.6.3.tar.gz.
File metadata
- Download URL: aprovan_cicadas-0.6.3.tar.gz
- Upload date:
- Size: 98.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbafdf8ee393699ad2d381af165521f179bb79e483ff8a00c68bb9da2557d955
|
|
| MD5 |
71fc51d591069fa763b8199faf538423
|
|
| BLAKE2b-256 |
bf69e0dfcccfff99d7ebee90d0fec0164bb0c572ba6b2ff3a41024b91e6221ea
|
Provenance
The following attestation bundles were made for aprovan_cicadas-0.6.3.tar.gz:
Publisher:
publish.yml on JacobSampson/cicadas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aprovan_cicadas-0.6.3.tar.gz -
Subject digest:
dbafdf8ee393699ad2d381af165521f179bb79e483ff8a00c68bb9da2557d955 - Sigstore transparency entry: 1191484894
- Sigstore integration time:
-
Permalink:
JacobSampson/cicadas@680738821140b349f8d5a9d290370bc53d081cdf -
Branch / Tag:
refs/heads/master - Owner: https://github.com/JacobSampson
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@680738821140b349f8d5a9d290370bc53d081cdf -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file aprovan_cicadas-0.6.3-py3-none-any.whl.
File metadata
- Download URL: aprovan_cicadas-0.6.3-py3-none-any.whl
- Upload date:
- Size: 135.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93dd93845f78b178b8fdad7774486f167c18b769625fd8e7a209788e625c2d5e
|
|
| MD5 |
f51a5e23194e25ee9cb33de09f9d4461
|
|
| BLAKE2b-256 |
43365ee1c4c20a935c27e1f4b722cc67aae9f935498829189389c530ba0746c2
|
Provenance
The following attestation bundles were made for aprovan_cicadas-0.6.3-py3-none-any.whl:
Publisher:
publish.yml on JacobSampson/cicadas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aprovan_cicadas-0.6.3-py3-none-any.whl -
Subject digest:
93dd93845f78b178b8fdad7774486f167c18b769625fd8e7a209788e625c2d5e - Sigstore transparency entry: 1191484896
- Sigstore integration time:
-
Permalink:
JacobSampson/cicadas@680738821140b349f8d5a9d290370bc53d081cdf -
Branch / Tag:
refs/heads/master - Owner: https://github.com/JacobSampson
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@680738821140b349f8d5a9d290370bc53d081cdf -
Trigger Event:
workflow_dispatch
-
Statement type: