417 lines
12 KiB
Markdown
417 lines
12 KiB
Markdown
# Development Workflow
|
|
|
|
> Based on [Effective Harnesses for Long-Running Agents](https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents)
|
|
|
|
---
|
|
|
|
## Table of Contents
|
|
|
|
1. [Quick Start (Do This First)](#quick-start-do-this-first)
|
|
2. [Workflow Overview](#workflow-overview)
|
|
3. [Session Start Process](#session-start-process)
|
|
4. [Development Process](#development-process)
|
|
5. [Session End](#session-end)
|
|
6. [File Descriptions](#file-descriptions)
|
|
7. [Best Practices](#best-practices)
|
|
|
|
---
|
|
|
|
## Quick Start (Do This First)
|
|
|
|
### Step 0: Initialize Developer Identity (First Time Only)
|
|
|
|
> **Multi-developer support**: Each developer/Agent needs to initialize their identity first
|
|
|
|
```bash
|
|
# Check if already initialized
|
|
python3 ./.trellis/scripts/get_developer.py
|
|
|
|
# If not initialized, run:
|
|
python3 ./.trellis/scripts/init_developer.py <your-name>
|
|
# Example: python3 ./.trellis/scripts/init_developer.py cursor-agent
|
|
```
|
|
|
|
This creates:
|
|
- `.trellis/.developer` - Your identity file (gitignored, not committed)
|
|
- `.trellis/workspace/<your-name>/` - Your personal workspace directory
|
|
|
|
**Naming suggestions**:
|
|
- Human developers: Use your name, e.g., `john-doe`
|
|
- Cursor AI: `cursor-agent` or `cursor-<task>`
|
|
- Claude Code: `claude-agent` or `claude-<task>`
|
|
- iFlow cli: `iflow-agent` or `iflow-<task>`
|
|
|
|
### Step 1: Understand Current Context
|
|
|
|
```bash
|
|
# Get full context in one command
|
|
python3 ./.trellis/scripts/get_context.py
|
|
|
|
# Or check manually:
|
|
python3 ./.trellis/scripts/get_developer.py # Your identity
|
|
python3 ./.trellis/scripts/task.py list # Active tasks
|
|
git status && git log --oneline -10 # Git state
|
|
```
|
|
|
|
### Step 2: Read Project Guidelines [MANDATORY]
|
|
|
|
**CRITICAL**: Read guidelines before writing any code:
|
|
|
|
```bash
|
|
# Read frontend guidelines index (if applicable)
|
|
cat .trellis/spec/frontend/index.md
|
|
|
|
# Read backend guidelines index (if applicable)
|
|
cat .trellis/spec/backend/index.md
|
|
```
|
|
|
|
**Why read both?**
|
|
- Understand the full project architecture
|
|
- Know coding standards for the entire codebase
|
|
- See how frontend and backend interact
|
|
- Learn the overall code quality requirements
|
|
|
|
### Step 3: Before Coding - Read Specific Guidelines (Required)
|
|
|
|
Based on your task, read the **detailed** guidelines:
|
|
|
|
**Frontend Task**:
|
|
```bash
|
|
cat .trellis/spec/frontend/hook-guidelines.md # For hooks
|
|
cat .trellis/spec/frontend/component-guidelines.md # For components
|
|
cat .trellis/spec/frontend/type-safety.md # For types
|
|
```
|
|
|
|
**Backend Task**:
|
|
```bash
|
|
cat .trellis/spec/backend/database-guidelines.md # For DB operations
|
|
cat .trellis/spec/backend/type-safety.md # For types
|
|
cat .trellis/spec/backend/logging-guidelines.md # For logging
|
|
```
|
|
|
|
---
|
|
|
|
## Workflow Overview
|
|
|
|
### Core Principles
|
|
|
|
1. **Read Before Write** - Understand context before starting
|
|
2. **Follow Standards** - [!] **MUST read `.trellis/spec/` guidelines before coding**
|
|
3. **Incremental Development** - Complete one task at a time
|
|
4. **Record Promptly** - Update tracking files immediately after completion
|
|
5. **Document Limits** - [!] **Max 2000 lines per journal document**
|
|
|
|
### File System
|
|
|
|
```
|
|
.trellis/
|
|
|-- .developer # Developer identity (gitignored)
|
|
|-- scripts/
|
|
| |-- __init__.py # Python package init
|
|
| |-- common/ # Shared utilities (Python)
|
|
| | |-- __init__.py
|
|
| | |-- paths.py # Path utilities
|
|
| | |-- developer.py # Developer management
|
|
| | +-- git_context.py # Git context implementation
|
|
| |-- multi_agent/ # Multi-agent pipeline scripts
|
|
| | |-- __init__.py
|
|
| | |-- start.py # Start worktree agent
|
|
| | |-- status.py # Monitor agent status
|
|
| | |-- create_pr.py # Create PR
|
|
| | +-- cleanup.py # Cleanup worktree
|
|
| |-- init_developer.py # Initialize developer identity
|
|
| |-- get_developer.py # Get current developer name
|
|
| |-- task.py # Manage tasks
|
|
| |-- get_context.py # Get session context
|
|
| +-- add_session.py # One-click session recording
|
|
|-- workspace/ # Developer workspaces
|
|
| |-- index.md # Workspace index + Session template
|
|
| +-- {developer}/ # Per-developer directories
|
|
| |-- index.md # Personal index (with @@@auto markers)
|
|
| +-- journal-N.md # Journal files (sequential numbering)
|
|
|-- tasks/ # Task tracking
|
|
| +-- {MM}-{DD}-{name}/
|
|
| +-- task.json
|
|
|-- spec/ # [!] MUST READ before coding
|
|
| |-- frontend/ # Frontend guidelines (if applicable)
|
|
| | |-- index.md # Start here - guidelines index
|
|
| | +-- *.md # Topic-specific docs
|
|
| |-- backend/ # Backend guidelines (if applicable)
|
|
| | |-- index.md # Start here - guidelines index
|
|
| | +-- *.md # Topic-specific docs
|
|
| +-- guides/ # Thinking guides
|
|
| |-- index.md # Guides index
|
|
| |-- cross-layer-thinking-guide.md # Pre-implementation checklist
|
|
| +-- *.md # Other guides
|
|
+-- workflow.md # This document
|
|
```
|
|
|
|
---
|
|
|
|
## Session Start Process
|
|
|
|
### Step 1: Get Session Context
|
|
|
|
Use the unified context script:
|
|
|
|
```bash
|
|
# Get all context in one command
|
|
python3 ./.trellis/scripts/get_context.py
|
|
|
|
# Or get JSON format
|
|
python3 ./.trellis/scripts/get_context.py --json
|
|
```
|
|
|
|
### Step 2: Read Development Guidelines [!] REQUIRED
|
|
|
|
**[!] CRITICAL: MUST read guidelines before writing any code**
|
|
|
|
Based on what you'll develop, read the corresponding guidelines:
|
|
|
|
**Frontend Development** (if applicable):
|
|
```bash
|
|
# Read index first, then specific docs based on task
|
|
cat .trellis/spec/frontend/index.md
|
|
```
|
|
|
|
**Backend Development** (if applicable):
|
|
```bash
|
|
# Read index first, then specific docs based on task
|
|
cat .trellis/spec/backend/index.md
|
|
```
|
|
|
|
**Cross-Layer Features**:
|
|
```bash
|
|
# For features spanning multiple layers
|
|
cat .trellis/spec/guides/cross-layer-thinking-guide.md
|
|
```
|
|
|
|
### Step 3: Select Task to Develop
|
|
|
|
Use the task management script:
|
|
|
|
```bash
|
|
# List active tasks
|
|
python3 ./.trellis/scripts/task.py list
|
|
|
|
# Create new task (creates directory with task.json)
|
|
python3 ./.trellis/scripts/task.py create "<title>" --slug <task-name>
|
|
```
|
|
|
|
---
|
|
|
|
## Development Process
|
|
|
|
### Task Development Flow
|
|
|
|
```
|
|
1. Create or select task
|
|
--> python3 ./.trellis/scripts/task.py create "<title>" --slug <name> or list
|
|
|
|
2. Write code according to guidelines
|
|
--> Read .trellis/spec/ docs relevant to your task
|
|
--> For cross-layer: read .trellis/spec/guides/
|
|
|
|
3. Self-test
|
|
--> Run project's lint/test commands (see spec docs)
|
|
--> Manual feature testing
|
|
|
|
4. Commit code
|
|
--> git add <files>
|
|
--> git commit -m "type(scope): description"
|
|
Format: feat/fix/docs/refactor/test/chore
|
|
|
|
5. Record session (one command)
|
|
--> python3 ./.trellis/scripts/add_session.py --title "Title" --commit "hash"
|
|
```
|
|
|
|
### Code Quality Checklist
|
|
|
|
**Must pass before commit**:
|
|
- [OK] Lint checks pass (project-specific command)
|
|
- [OK] Type checks pass (if applicable)
|
|
- [OK] Manual feature testing passes
|
|
|
|
**Project-specific checks**:
|
|
- See `.trellis/spec/frontend/quality-guidelines.md` for frontend
|
|
- See `.trellis/spec/backend/quality-guidelines.md` for backend
|
|
|
|
---
|
|
|
|
## Session End
|
|
|
|
### One-Click Session Recording
|
|
|
|
After code is committed, use:
|
|
|
|
```bash
|
|
python3 ./.trellis/scripts/add_session.py \
|
|
--title "Session Title" \
|
|
--commit "abc1234" \
|
|
--summary "Brief summary"
|
|
```
|
|
|
|
This automatically:
|
|
1. Detects current journal file
|
|
2. Creates new file if 2000-line limit exceeded
|
|
3. Appends session content
|
|
4. Updates index.md (sessions count, history table)
|
|
|
|
### Pre-end Checklist
|
|
|
|
Use `/trellis:finish-work` command to run through:
|
|
1. [OK] All code committed, commit message follows convention
|
|
2. [OK] Session recorded via `add_session.py`
|
|
3. [OK] No lint/test errors
|
|
4. [OK] Working directory clean (or WIP noted)
|
|
5. [OK] Spec docs updated if needed
|
|
|
|
---
|
|
|
|
## File Descriptions
|
|
|
|
### 1. workspace/ - Developer Workspaces
|
|
|
|
**Purpose**: Record each AI Agent session's work content
|
|
|
|
**Structure** (Multi-developer support):
|
|
```
|
|
workspace/
|
|
|-- index.md # Main index (Active Developers table)
|
|
+-- {developer}/ # Per-developer directory
|
|
|-- index.md # Personal index (with @@@auto markers)
|
|
+-- journal-N.md # Journal files (sequential: 1, 2, 3...)
|
|
```
|
|
|
|
**When to update**:
|
|
- [OK] End of each session
|
|
- [OK] Complete important task
|
|
- [OK] Fix important bug
|
|
|
|
### 2. spec/ - Development Guidelines
|
|
|
|
**Purpose**: Documented standards for consistent development
|
|
|
|
**Structure** (Multi-doc format):
|
|
```
|
|
spec/
|
|
|-- frontend/ # Frontend docs (if applicable)
|
|
| |-- index.md # Start here
|
|
| +-- *.md # Topic-specific docs
|
|
|-- backend/ # Backend docs (if applicable)
|
|
| |-- index.md # Start here
|
|
| +-- *.md # Topic-specific docs
|
|
+-- guides/ # Thinking guides
|
|
|-- index.md # Start here
|
|
+-- *.md # Guide-specific docs
|
|
```
|
|
|
|
**When to update**:
|
|
- [OK] New pattern discovered
|
|
- [OK] Bug fixed that reveals missing guidance
|
|
- [OK] New convention established
|
|
|
|
### 3. Tasks - Task Tracking
|
|
|
|
Each task is a directory containing `task.json`:
|
|
|
|
```
|
|
tasks/
|
|
|-- 01-21-my-task/
|
|
| +-- task.json
|
|
+-- archive/
|
|
+-- 2026-01/
|
|
+-- 01-15-old-task/
|
|
+-- task.json
|
|
```
|
|
|
|
**Commands**:
|
|
```bash
|
|
python3 ./.trellis/scripts/task.py create "<title>" [--slug <name>] # Create task directory
|
|
python3 ./.trellis/scripts/task.py archive <name> # Archive to archive/{year-month}/
|
|
python3 ./.trellis/scripts/task.py list # List active tasks
|
|
python3 ./.trellis/scripts/task.py list-archive # List archived tasks
|
|
```
|
|
|
|
---
|
|
|
|
## Best Practices
|
|
|
|
### [OK] DO - Should Do
|
|
|
|
1. **Before session start**:
|
|
- Run `python3 ./.trellis/scripts/get_context.py` for full context
|
|
- [!] **MUST read** relevant `.trellis/spec/` docs
|
|
|
|
2. **During development**:
|
|
- [!] **Follow** `.trellis/spec/` guidelines
|
|
- For cross-layer features, use `/trellis:check-cross-layer`
|
|
- Develop only one task at a time
|
|
- Run lint and tests frequently
|
|
|
|
3. **After development complete**:
|
|
- Use `/trellis:finish-work` for completion checklist
|
|
- After fix bug, use `/trellis:break-loop` for deep analysis
|
|
- Human commits after testing passes
|
|
- Use `add_session.py` to record progress
|
|
|
|
### [X] DON'T - Should Not Do
|
|
|
|
1. [!] **Don't** skip reading `.trellis/spec/` guidelines
|
|
2. [!] **Don't** let journal single file exceed 2000 lines
|
|
3. **Don't** develop multiple unrelated tasks simultaneously
|
|
4. **Don't** commit code with lint/test errors
|
|
5. **Don't** forget to update spec docs after learning something
|
|
6. [!] **Don't** execute `git commit` - AI should not commit code
|
|
|
|
---
|
|
|
|
## Quick Reference
|
|
|
|
### Must-read Before Development
|
|
|
|
| Task Type | Must-read Document |
|
|
|-----------|-------------------|
|
|
| Frontend work | `frontend/index.md` → relevant docs |
|
|
| Backend work | `backend/index.md` → relevant docs |
|
|
| Cross-Layer Feature | `guides/cross-layer-thinking-guide.md` |
|
|
|
|
### Commit Convention
|
|
|
|
```bash
|
|
git commit -m "type(scope): description"
|
|
```
|
|
|
|
**Type**: feat, fix, docs, refactor, test, chore
|
|
**Scope**: Module name (e.g., auth, api, ui)
|
|
|
|
### Common Commands
|
|
|
|
```bash
|
|
# Session management
|
|
python3 ./.trellis/scripts/get_context.py # Get full context
|
|
python3 ./.trellis/scripts/add_session.py # Record session
|
|
|
|
# Task management
|
|
python3 ./.trellis/scripts/task.py list # List tasks
|
|
python3 ./.trellis/scripts/task.py create "<title>" # Create task
|
|
|
|
# Slash commands
|
|
/trellis:finish-work # Pre-commit checklist
|
|
/trellis:break-loop # Post-debug analysis
|
|
/trellis:check-cross-layer # Cross-layer verification
|
|
```
|
|
|
|
---
|
|
|
|
## Summary
|
|
|
|
Following this workflow ensures:
|
|
- [OK] Continuity across multiple sessions
|
|
- [OK] Consistent code quality
|
|
- [OK] Trackable progress
|
|
- [OK] Knowledge accumulation in spec docs
|
|
- [OK] Transparent team collaboration
|
|
|
|
**Core Philosophy**: Read before write, follow standards, record promptly, capture learnings
|