home / skills / adaptationio / skrillz / ac-session-manager

ac-session-manager skill

/skills/ac-session-manager

npx playbooks add skill adaptationio/skrillz --skill ac-session-manager

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
8.1 KB
---
name: ac-session-manager
description: Session lifecycle management for autonomous coding. Use when starting sessions, resuming work, detecting session type (init vs continue), or managing auto-continuation between sessions.
version: 1.0.0
layer: foundation
category: auto-claude-replication
triggers:
  - "start session"
  - "continue session"
  - "session status"
  - "detect session"
  - "auto continue"
---

# AC Session Manager

Complete session lifecycle management for autonomous coding operations.

## Overview

Manages the full session lifecycle:
- Session type detection (INIT vs CONTINUE)
- Session creation and configuration
- Auto-continuation between sessions
- Graceful shutdown with state preservation

## Quick Start

### Detect Session Type
```python
from scripts.session_manager import SessionManager

manager = SessionManager(project_dir)
session_type = await manager.detect_type()

if session_type == "INIT":
    # First run - initialize project
    await manager.run_initializer()
elif session_type == "CONTINUE":
    # Resume work
    await manager.run_continuation()
elif session_type == "COMPLETE":
    print("All features complete!")
```

### Run Session
```python
async with SessionManager(project_dir) as session:
    result = await session.run(prompt)
    print(f"Status: {result.status}")
```

## Session Lifecycle

```
┌─────────────────────────────────────────────────────────────┐
│                    SESSION LIFECYCLE                         │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  1. DETECT SESSION TYPE                                      │
│     ├─ Check for feature_list.json                          │
│     ├─ If missing → INIT session                            │
│     ├─ If handoff exists → CONTINUE_FROM_HANDOFF            │
│     ├─ If all pass → COMPLETE                               │
│     └─ Otherwise → CONTINUE_IMPLEMENTATION                  │
│                                                              │
│  2. CREATE SESSION                                           │
│     ├─ Initialize SDK client                                │
│     ├─ Configure tools and permissions                      │
│     └─ Set working directory                                │
│                                                              │
│  3. RUN SESSION                                              │
│     ├─ Execute prompt (initializer or coding)               │
│     ├─ Handle tool calls                                    │
│     └─ Capture results                                      │
│                                                              │
│  4. END SESSION                                              │
│     ├─ Save state                                           │
│     ├─ Check completion status                              │
│     └─ Trigger auto-continue or shutdown                    │
│                                                              │
└─────────────────────────────────────────────────────────────┘
```

## Session Types

| Type | Condition | Action |
|------|-----------|--------|
| `INIT` | No feature_list.json | Run initializer agent |
| `CONTINUE_FROM_HANDOFF` | handoffs/current.json exists | Resume from handoff |
| `CONTINUE_IMPLEMENTATION` | Features incomplete | Continue coding |
| `COMPLETE` | All features pass | Generate report, exit |

## Detection Logic

```python
def detect_session_type(project_dir: Path) -> SessionType:
    # Check for initialization
    if not (project_dir / "feature_list.json").exists():
        return SessionType.INIT

    # Check for handoff
    if (project_dir / ".claude/handoffs/current.json").exists():
        return SessionType.CONTINUE_FROM_HANDOFF

    # Check completion
    features = load_features(project_dir)
    if all(f["passes"] for f in features):
        return SessionType.COMPLETE

    return SessionType.CONTINUE_IMPLEMENTATION
```

## Operations

### 1. Create Session

```python
session = await SessionManager.create(
    project_dir=project_dir,
    model="claude-opus-4-5-20251101",
    max_turns=1000,
    tools=["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
)
```

### 2. Run Initializer

```python
result = await session.run_initializer(
    spec="Build a task management app with auth..."
)
# Creates:
#   - feature_list.json (100+ features)
#   - init.sh (environment setup)
#   - Project scaffold
```

### 3. Run Continuation

```python
result = await session.run_continuation()
# Loads state, resumes at current feature
```

### 4. Auto-Continue

```python
# Configure auto-continuation
session.configure_auto_continue(
    enabled=True,
    delay_seconds=3
)

# After session ends, automatically starts next
await session.run()
# ... session completes ...
# [3 second delay]
# Next session starts automatically
```

### 5. Graceful Shutdown

```python
await session.shutdown(
    save_state=True,
    create_handoff=True
)
# Saves state, creates handoff for next session
```

## Session Configuration

```python
@dataclass
class SessionConfig:
    model: str = "claude-opus-4-5-20251101"
    max_turns: int = 1000
    timeout_ms: int = 600000
    continue_delay: int = 3
    max_sessions: int = None  # Unlimited

    # Tool configuration
    tools: list = field(default_factory=lambda: [
        "Read", "Write", "Edit", "Bash", "Glob", "Grep"
    ])

    # Permissions
    sandbox_enabled: bool = True
    allowed_paths: list = field(default_factory=lambda: ["./**"])
```

## Multi-Session Flow

```
SESSION 1: Initialize + Features 1-15
    │
    ▼ (context 85% → handoff)

SESSION 2: Resume + Features 16-30
    │
    ▼ (context 85% → handoff)

SESSION 3: Resume + Features 31-50
    │
    ▼

COMPLETE: All features pass!
```

### Session State Persistence

```json
// .claude-session-state.json
{
  "id": "session-20250115-100000",
  "type": "CONTINUE_IMPLEMENTATION",
  "status": "running",
  "iteration": 5,
  "started_at": "2025-01-15T10:00:00Z",
  "features_this_session": ["auth-001", "auth-002"],
  "context_usage": 0.65
}
```

## Prompts

### Initializer Prompt
```markdown
You are initializing an autonomous coding project.

SPECIFICATION:
{spec}

Your tasks:
1. Analyze the specification
2. Generate feature_list.json with 100+ testable features
3. Create init.sh for environment setup
4. Scaffold initial project structure
5. Initialize git repository
6. Commit initial state

Output MUST include:
- feature_list.json (all features passes: false)
- init.sh (executable setup script)
- Project files (scaffold)
```

### Continuation Prompt
```markdown
You are continuing autonomous development.

Current state:
- Features completed: {completed}/{total}
- Current feature: {current_feature}
- Last action: {last_action}

Resume implementing features following TDD:
1. Select next incomplete feature
2. Write failing test (RED)
3. Implement to pass (GREEN)
4. Refactor as needed
5. Commit changes

Work on ONE feature at a time.
Update feature_list.json when feature passes.
```

## Integration Points

- **ac-config-manager**: Gets session configuration
- **ac-state-tracker**: Saves/loads session state
- **ac-hooks-manager**: Registers Stop hook
- **ac-handoff-coordinator**: Creates handoff packages
- **ac-autonomous-loop**: Orchestrates sessions

## References

- `references/SESSION-LIFECYCLE.md` - Detailed lifecycle
- `references/PROMPTS.md` - Session prompts
- `references/MULTI-SESSION.md` - Multi-session patterns

## Scripts

- `scripts/session_manager.py` - Core SessionManager
- `scripts/session_detector.py` - Session type detection
- `scripts/auto_continue.py` - Auto-continuation logic
- `scripts/prompts.py` - Prompt templates