CascadingDev/automation
rob 2862b2ad50 updated uml diagrams 2025-11-01 11:34:06 -03:00
..
README.md fix: Add YAML syntax fix and mock AI script for testing 2025-10-31 09:18:59 -03:00
__init__.py test: Add comprehensive workflow tests and improve template tests 2025-10-30 16:20:42 -03:00
agents.py updated uml diagrams 2025-11-01 11:34:06 -03:00
config.py fix: Add YAML syntax fix and mock AI script for testing 2025-10-31 09:18:59 -03:00
patcher.py fix: Handle empty AI diffs gracefully instead of raising errors 2025-11-01 02:33:31 -03:00
runner.py updated uml diagrams 2025-11-01 11:34:06 -03:00
summary.py refactor: Clean up pre-commit hook and add comprehensive comments 2025-11-01 01:08:00 -03:00
workflow.py fix: Add YAML syntax fix and mock AI script for testing 2025-10-31 09:18:59 -03:00

README.md

CascadingDev Automation

Automated discussion summarization with AI-powered extraction.

Quick Start

Phase 1 (Always Works):

# Just commit! Vote tracking happens automatically
git commit -m "Discussion updates"

Phase 2 (AI-Enhanced):

# Option 1: Use Claude CLI (default - no config needed)
# Just have 'claude' command available in PATH

# Option 2: Use different AI
git config cascadingdev.aicommand "gemini '{prompt}'"

# Option 3: Use API directly
pip install anthropic
export ANTHROPIC_API_KEY="sk-ant-..."

What Gets Automated

Phase 1 (Basic)

  • Vote counting (READY/CHANGES/REJECT)
  • Latest vote per participant
  • Auto-update summary files

Phase 2 (AI-Powered)

  • @Mention tracking
  • Question identification (OPEN/PARTIAL/ANSWERED) — falls back to Q:/? marker regex when no AI is configured
  • Action items (TODO → ASSIGNED → DONE) — recognizes TODO:/DONE: markers out of the box
  • Decision logging (ADR-style with rationale)
  • Timeline entries — newest discussion snippets appear in ## Timeline even without an AI provider
  • Stage gating — feature discussions flip status based on vote thresholds and spawn implementation discussions when .ai-rules.yml says so

Configuration Examples

Claude Code (Default)

# No configuration needed if 'claude' command works
claude -p "test"  # Verify command works

# Or customize:
git config cascadingdev.aicommand "claude -p '{prompt}'"

Gemini CLI

git config cascadingdev.aiprovider "gemini-cli"
git config cascadingdev.aicommand "gemini '{prompt}'"

OpenAI Codex

git config cascadingdev.aiprovider "codex-cli"
git config cascadingdev.aicommand "codex '{prompt}'"

Custom AI Tool

# Use any command that accepts a prompt and returns JSON
git config cascadingdev.aicommand "my-ai '{prompt}' --format json"

Check Current Config

git config cascadingdev.aiprovider  # Defaults to: claude-cli
git config cascadingdev.aicommand   # Defaults to: claude -p '{prompt}'

File Structure

automation/
├── runner.py      # AI rules engine entrypoint (invoked from pre-commit)
├── config.py      # Cascading .ai-rules loader and template resolver
├── patcher.py     # Unified diff pipeline + git apply wrapper
├── workflow.py    # Vote/timeline status reporter
├── agents.py      # AI extraction agents
├── summary.py     # Summary file formatter
└── README.md      # This file

How It Works

  1. Pre-commit hook triggers workflow.py --status
  2. Finds staged .discussion.md files
  3. Phase 1: Parses VOTE: lines → updates summary
  4. Phase 2: Calls AI agent → extracts questions/actions/decisions
  5. Updates corresponding .sum.md files
  6. Auto-stages updated summaries
  7. Commit continues (never blocks, always exits 0)

Vote Format

- ParticipantName: Any comment. VOTE: READY|CHANGES|REJECT

Rules:

  • Latest vote per participant wins
  • Must follow - Name: ... bullet format
  • Case-insensitive: VOTE:, vote:, Vote:

Markers (Recognized Without AI)

The system recognizes these markers without requiring AI using regex patterns:

Q: <question>              # Question (also: "Question:", or ending with ?)
A: <answer>                # Answer (not yet tracked)
TODO: <task>               # Unassigned action item
ACTION: <task>             # Unassigned action item (alias for TODO)
ASSIGNED: <task> @name     # Claimed action item (extracts @mention as assignee)
DONE: <completion>         # Completed task
DECISION: <choice>         # Decision (AI can add rationale/alternatives)
VOTE: READY|CHANGES|REJECT # Vote (REQUIRED - always tracked)
@Name, @all                # Mentions (tracked automatically)

Examples:

- Alice: Q: Should we support OAuth2?
- Bob: TODO: Research OAuth2 libraries
- Bob: ASSIGNED: OAuth2 research (@Bob taking this)
- Carol: DONE: Completed OAuth2 comparison
- Dave: DECISION: Use OAuth2 + JWT hybrid approach
- Eve: @all please review by Friday

Note: These markers work immediately without any AI configuration. AI enhancement adds:

  • Question answer tracking (A: responses)
  • Decision rationale and alternatives
  • Action item status transitions
  • More sophisticated context understanding

Testing

# Test workflow vote parsing & staged-diff handling
pytest tests/test_workflow.py -v

# Manual test
echo "- Test: Comment. VOTE: READY" >> Docs/features/test/discussions/test.discussion.md
git add Docs/features/test/discussions/test.discussion.md
git commit -m "Test"  # Automation runs

Troubleshooting

No AI Processing

# Check if AI command works
claude -p "Return JSON: {\"test\": true}"

# Check git config
git config --list | grep cascadingdev

# Try environment variable
CDEV_AI_COMMAND="claude -p '{prompt}'" git commit -m "test"

Votes Not Updating

  • Ensure format: - Name: text. VOTE: READY
  • Check summary file has markers: <!-- SUMMARY:VOTES START -->
  • Look for warnings in commit output

Documentation