docs: add ideate workflow + update run workflow with IDEATE stage and multi-project

---ci---
phase: 0
milestone: v0.10
status: specify
decisions:
  - id: D-089
    decision: No separate codebase map command — subsumed by ideation
    rationale: Git-native + .ciagent/ covers all mapping needs; avoids tree-sitter dep
    confidence: 0.88
  - id: D-090
    decision: Milestone v0.10 for ideate + multi-project
    rationale: Significant features but not schema-breaking
    confidence: 0.95
---/ci---

- Add opencode/ci/workflows/ideate.md: full ideation pipeline specification
- Update opencode/ci/workflows/run.md: add IDEATE stage, update multi-project Step 0
This commit is contained in:
Jon Chery
2026-05-30 19:45:30 +00:00
parent a8b50f5109
commit da528cc493
2 changed files with 307 additions and 3 deletions
+288
View File
@@ -0,0 +1,288 @@
---
description: Run the CIAgent ideation pipeline — analyze project for improvement opportunities, validate recommendations with user, update long-term documents
---
# CIAgent Ideate
Run the CIAgent ideation engine to discover improvement opportunities based on git-native signals, codebase analysis, and cross-project patterns.
**Usage:** `ciagent ideate [options]`
## Step 0: Confirm Active Project
Check `ci listProjects()` or read `.ciagent/config.json` to determine project context.
If `.ciagent/config.json` has `active_projects` array with length > 0:
- Use `--project <slug>` to target a specific project
- Use `--project all` to run ideation across all active projects (deduplicate findings)
- If no `--project` flag, use first project in `active_projects`
If `.ciagent/config.json` has `active_project` string (legacy):
- Use that project as the target
- Backwards-compatible: if both `active_project` and `active_projects` exist, `active_projects` takes precedence
## Step 1: Load Project Context
```bash
git log --max-count=50
git branch -a
```
Read project reference files:
- `.ciagent/PROJECT.md` — Vision, requirements, constraints, key decisions
- `.ciagent/ROADMAP.md` — Phases, milestones, success criteria
- `.ciagent/REQUIREMENTS.md` — REQ-IDs, status, traceability
- `.ciagent/ARCHITECTURE.md` — Component boundaries, data flow
- `.ciagent/config.json` — Ideation configuration, autonomy level
## Step 2: Run Ideation Tiers
Execute tiers in order. Each tier produces `Idea[]` objects. Ideas from all tiers are merged and deduplicated before presentation.
### Tier 1: Mechanical Analysis (Always Available)
No backend required. All signals come from git history, `.ciagent/` files, and filesystem.
#### 2.1 Git-Native Pattern Mining
```bash
git log --all --grep="lessons:" --format="%B" -50
git log --all --grep="decisions:" --format="%B" -50 -- "***confidence***0.*"
git log --all --grep="escalation:" --format="%B" -50
git log --all --grep="compound:" --format="%B" -50
```
Extract:
- **Repeated lessons** — topics appearing > 1 time → systemic issue
- **Low-confidence decisions** — confidence < 0.7 in `---ci---` blocks → improvement targets
- **Escalation types** — each type identifies a process gap
- **Compound solutions** — suggest generalizing patterns that were solved multiple times
- **Partial requirements** — `requirements: partial: [REQ-XX]` in `---ci---` blocks
#### 2.2 Coverage Gap Analysis
- Parse REQUIREMENTS.md for `pending` and `in_progress` status requirements
- Cross-reference with PLAN.md task completion
- Identify requirements with no corresponding implementation tasks
#### 2.3 Verification Layer Inversion
For each verification layer, identify what's MISSING:
- **Structural**: Files referenced but not created, stubs, TODOs, placeholder implementations
- **Behavioral**: Test suites with < 80% coverage, missing test files for covered requirements
- **Security**: No STRIDE analysis for modified components, missing input validation patterns
- **Quality**: P1/P2 review findings unresolved, consistent style violations
#### 2.4 Architectural Drift Detection
- Parse ARCHITECTURE.md component tree
- Compare against actual `src/` directory structure
- Flag components documented but not implemented
- Flag components implemented but not documented
- Check import graph for unauthorized dependencies between components
#### 2.5 Spec-Driven Improvement
- Analyze REQUIREMENTS.md for ambiguous language ("should" vs "must", undefined terms)
- Check for contradictions between requirements
- Compare against common patterns for the project type (identified from package.json keywords)
- Flag requirements with no verification criteria
### Tier 2: Backend-Enriched Analysis (When LLM Available)
Requires an intelligence backend (opencode, openai, anthropic, or ollama).
#### 2.6 Prioritization and Ranking
- Evaluate all mechanical findings for impact and feasibility
- Rank ideas by: (1) number of signals corroborating, (2) severity of the gap, (3) ease of addressing
#### 2.7 Novel Improvement Suggestions
- Suggest improvements beyond pattern matching (e.g., "consider rate limiting" based on industry best practices, not just a repeated lesson)
- Generate concrete action plans for each accepted idea
- Identify bleeding-edge approaches relevant to the project's tech stack
#### 2.8 Chaos Engineering Ideation
- Generate failure scenarios: "What if the backend is unavailable?", "What if a requirement changes mid-implementation?", "What if test coverage drops below threshold?"
- Map failure scenarios to code that would break
- Suggest resilience improvements for each scenario
### Tier 3: Cross-Project Pattern Transfer (When Multi-Project Registry Exists)
#### 2.9 Cross-Project Mining
For each project in `.ciagent/config.json` projects array:
- Read that project's `---ci---` blocks for lessons, decisions, compound solutions
- Find patterns relevant to the current project (same requirement area, same tech stack from package.json)
- Suggest adaptations of lessons learned elsewhere
- Calculate relevance score based on tech stack similarity
## Step 3: Merge and DeduplicateIdeas
Combine ideas from all tiers. Deduplicate by:
- Same `title` strings → keep highest confidence version
- Same `relatedReq` → merge into single idea with combined sources
- Same `category` + overlapping domains → keep most specific
Sort by confidence (descending), then by number of corroborating signals.
## Step 4: Interactive Validation
Present ideas one-at-a-time to the user:
```
═══ Recommendation N of M ═══
Category: [CATEGORY] | Confidence: [0.XX] | Tier: [mechanical/backend-enriched/cross-project]
Title: [idea title]
Rationale: [idea rationale]
Related Req: [REQ-ID or "new requirement"]
Source: [source signal type]
Actions:
1. Accept (add to next milestone as new requirement)
2. Skip
3. Modify (edit title/rationale before accepting)
4. Details (show full analysis including signal sources)
```
For each accepted idea:
1. Generate `IDEATE-NN` requirement ID
2. Prompt for milestone placement (append to existing or create new)
3. Add to REQUIREMENTS.md with status `pending`
4. Add to ROADMAP.md next milestone
## Step 5: Update Long-Term Documents
For each accepted idea:
### REQUIREMENTS.md
Add a new row in the appropriate milestone section:
```
| IDEATE-NN | [idea title] | [priority] | [phase] | pending |
```
### ROADMAP.md
Add the idea to the next milestone's phase structure:
- If next milestone has a matching phase category, append to that phase
- If no matching phase, suggest a new phase
### ARCHITECTURE.md
If the idea involves architectural changes, note the component change needed.
### PROJECT.md
If the idea adds new requirements or key decisions, update accordingly.
Commit all document updates:
```
decision(P##): ideation results — [N] accepted, [M] skipped
```
## Step 6: Ask-After-Validation Kickoff
After all ideas have been validated:
```
Accepted: [N] recommendations
Skipped: [M] recommendations
Would you like to kick off the run workflow for these ideas? (y/n)
```
If yes: Start `ciagent run` with the updated project context. The `--ideate` flag is NOT needed because the ideas are already in ROADMAP.md and REQUIREMENTS.md — the standard pipeline will pick them up.
If no: Output summary and exit.
## Command Flags
| Flag | Description |
|------|-------------|
| `--category <cats>` | Focus on specific categories: security,quality,architecture,coverage,improvement,spec,chaos (comma-separated) |
| `--affected` | Cascade impact analysis: given current changes, what else needs updating |
| `--spec` | Analyze specification completeness and ambiguity |
| `--external` | Include external signals: npm audit, OSV advisories, dependency staleness |
| `--cross-project` | Mine patterns from all projects in multi-project registry |
| `--output <format>` | Output format: interactive (default), json, markdown |
| `--project <slugs>` | Target project(s): slug, comma-separated, or `all` |
| `--backend <provider>` | Override intelligence backend for enrichment tier |
## Pipeline Integration
When `ciagent run --ideate` is used, the IDEATE stage is inserted between RESEARCH and PLAN:
```
SPECIFY → CLARIFY → RESEARCH → IDEATE → PLAN → EXECUTE → TEST → VERIFY → COMPLETE
```
IDEATE stage commit:
```
---ci---
phase: [phase-number]
milestone: [milestone-version]
status: ideate
decisions:
- id: D-XXX
decision: "Accepted [N] ideation recommendations"
rationale: "[summary of accepted ideas]"
confidence: [avg confidence]
requirements:
covered: [IDEATE-NN, ...]
---/ci---
```
## Output Modes
### Interactive (default)
Presented one-at-a-time with accept/skip/modify actions.
### JSON
```json
{
"project": "[slug]",
"milestone": "[version]",
"ideas": [
{
"id": "IDEATE-NN",
"source": "[source type]",
"category": "[category]",
"title": "[title]",
"rationale": "[rationale]",
"confidence": 0.XX,
"relatedReq": "[REQ-ID or null]",
"actions": ["[action types]"],
"tier": "[mechanical/backend-enriched/cross-project]",
"accepted": true
}
],
"summary": {
"total": 8,
"accepted": 6,
"skipped": 2,
"by_category": { "coverage": 2, "architecture": 1, "security": 1, "quality": 1, "improvement": 1 }
}
}
```
### Markdown
Formatted report suitable for PR descriptions or documentation.
## Error Recovery
On tier failure:
1. Mechanical tier always succeeds (git + filesystem only)
2. Backend-enriched tier: if backend unavailable, fall back to mechanical-only output
3. Cross-project tier: if no other projects in registry, skip silently
On validation failure (no ideas generated):
- Output "No improvement ideas identified for this project."
- Suggest `ciagent ideate --spec` for specification analysis or `--external` for external signals
+19 -3
View File
@@ -14,11 +14,18 @@ If no phase number specified, continues from the current phase (detected from gi
Check `ci listProjects()` or read `.ciagent/config.json` to determine if multi-project mode is active. Check `ci listProjects()` or read `.ciagent/config.json` to determine if multi-project mode is active.
If `.ciagent/config.json` has `projects[]` with length > 0: If `.ciagent/config.json` has `projects[]` with length > 0, or `active_projects` array exists:
- Confirm `active_project` is correct for this run - Confirm `active_projects` is correct for this run
- If not, set it with `ci setActiveProject(<slug>)` - If `--project all` is specified: iterate over all projects in `active_projects`
- If `--project <slug>` is specified: run for that project only
- If no `--project` flag: use first project in `active_projects`
- All commit messages must include `project: <slug>` in `---ci---` block - All commit messages must include `project: <slug>` in `---ci---` block
For multi-project execution (`--project all`):
- Execute pipeline for each project sequentially by default
- When `parallelization.enabled=true`: execute projects concurrently up to `max_concurrent_agents`
- Each project has independent phase branches and milestone tracking
If single-project mode: proceed with existing conventions. If single-project mode: proceed with existing conventions.
## Step 1: Load Git Context ## Step 1: Load Git Context
@@ -60,6 +67,15 @@ For each stage in order (starting from current or from `specify`):
- Update `.ciagent/` static files with conclusions - Update `.ciagent/` static files with conclusions
- Commit: `docs(P##): research findings` - Commit: `docs(P##): research findings`
### IDEATE (when --ideate flag is passed)
- Delegate to ci-ideation-agent
- Mine git history for patterns, analyze coverage gaps, detect drift
- If backend available: enrich with LLM suggestions
- If --cross-project: mine patterns from other projects
- Present recommendations interactively (accept/skip/modify)
- Accepted ideas update ROADMAP.md and REQUIREMENTS.md
- Commit: `decision(P##): ideation results — [N] accepted, [M] skipped`
### PLAN ### PLAN
- Delegate to ci-planner - Delegate to ci-planner
- Create vertical-slice plans with wave ordering - Create vertical-slice plans with wave ordering