# Timeline

> Group the current branch's commit history into semantic phases along a timeline, and generate two review documents: architecture evolution + code review.

- Skill: `tykisgod/timeline` (Agent Skill)
- Install (CLI): `npx skillmds@latest add tykisgod/timeline`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tykisgod/timeline/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tykisgod (https://skillmd.com/u/tykisgod)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tykisgod/timeline

---


Respond in the user's preferred language (detect from their recent messages, or fall back to the language setting in CLAUDE.md).

Group the current branch's commit history into semantic phases along a timeline, and generate two review documents: architecture evolution + code review.

Arguments: $ARGUMENTS
- No arguments: diff against main...HEAD
- `--base <branch>`: specify a custom base branch for comparison

## Core Concept

Unlike `/qq:brief` (produces architecture diff + PR checklist),
this command groups commits by **timeline phases**, helping reviewers build a mental model in development order while preserving priority annotations.

## Execution Steps

### 1. Collect Commit History

```bash
git log <base>..HEAD --oneline --reverse --format="%h %ai %s"
```

### 2. Group Commits into Semantic Phases

Grouping criteria (in order of priority):
1. **Semantic affinity**: consecutive commits on the same feature/subsystem go in the same group
2. **Natural breakpoints**: merge commits, date gaps > 1 day, module switches
3. **Phase markers in commit messages**: if a commit self-annotates with a Phase, respect that first

Each Phase requires:
- A semantic name (e.g. "Player Health System", not "Phase 1")
- Date range
- List of commits (hash + one-line description)
- One-sentence summary

Target: 5–10 Phases (too few loses timeline value; too many becomes per-commit annotation)

### 3. Analyze Changes per Phase

For each Phase:
```bash
git diff <phase_first_commit>~1..<phase_last_commit> --stat
git diff <phase_first_commit>~1..<phase_last_commit> -- '*.cs'
```

Read the full content of key changed files to understand context — not just diff fragments.

### 4. Generate Document A: Architecture Evolution Timeline

Format:
```markdown
# Architecture Evolution Timeline

> X phases, Y commits, Z-day development span
> Branch: `<branch>`, base: `<base>`

---

## Phase 1: <Semantic Name> (<date range>, N commits)

> One-sentence summary

<details>
<summary>Commits</summary>

- `hash1` message1
- `hash2` message2
</details>

### Architecture Changes

#### [Tier 1] Change Title (if any)
**Scope**: ...
**Nature of change**: ...

\```mermaid
<diagram: show the architectural changes introduced in this phase, not the accumulated final state>
\```

#### [Tier 2] Change Title (if any)
...

### Dependencies Introduced This Phase
- `ModuleA` → `ModuleB` (new reference)

### Cumulative State
> Overall progress to this point: X completed, next phase will Y

---

## Phase 2: <Semantic Name> ...
```

**Diagram requirements**:
- Each diagram shows the **incremental changes in this phase**, not the accumulated final state up to this point
- Use green to highlight parts newly added in this phase, gray for existing context
- If this phase modifies a structure introduced in a previous phase, use orange to highlight it

### 5. Generate Document B: Code Review Timeline

Format:
```markdown
# Code Review Timeline

> X phases, Y commits
> Branch: `<branch>`, base: `<base>`

## Review Priority Quick Reference

| Phase | P0 | P1 | P2 | Files | Est. Time | Core Risk |
|-------|----|----|----|-------|-----------|-----------|
| 1. Name | 0 | 2 | 1 | 5 | 10 min | No major risk |
| 2. Name | 3 | 1 | 0 | 12 | 25 min | Global static state isolation |
| ... | | | | | | |

Time estimation rules:
- Each P0 item ~5 min (requires reading context + verification)
- Each P1 item ~2 min (quick check)
- Each P2 item ~0.5 min (quick scan)
- Round up to the nearest 5 minutes

**Recommended review order**: sort by P0 count descending — review the highest-risk phases when most focused

---

## Phase 1: <Semantic Name> (<date range>, N commits)

> One-sentence summary

<details>
<summary>Commits</summary>

- `hash1` message1
- `hash2` message2
</details>

### Files to Review

List C# files involved in this phase by priority (exclude pure asset/config/test files), annotated with the highest priority level:

| File | Priority | Change Summary |
|------|----------|---------------|
| `Assets/Scripts/.../GameManager.cs` | P0 | Core game loop changes |
| `Assets/Scripts/.../PlayerController.cs` | P0 | Input handling refactor |
| `Assets/Scripts/.../InventorySystem.cs` | P1 | Data model migration |
| ... | P2 | ... |

File list generation rules:
- Obtain from `git diff <phase_start>..<phase_end> --name-only -- '*.cs'`
- Exclude test files under `Tests/` (unless the tests themselves have P0/P1 review items)
- Exclude pure Editor tool files (unless they have review items)
- Each file is annotated with its highest priority level from this Phase's review items
- Files with no review items are annotated `--` (no separate review needed)
- Sort by priority: P0 first, `--` last

### P0 — Must be human-reviewed
1. **Filename:line** — change description
   Risk: why this needs attention
   Suggestion: what to focus on during review

### P1 — Recommended attention
2. **Filename:line** — change description
   Suggestion: checkpoints

### P2 — Quick scan
3. **Filename:line** — description

---

## Phase 2: ...
```

**P0/P1/P2 Assessment Criteria** (consistent with /qq:brief):

- **P0**: Public interface changes, new cross-module dependencies, data format changes, state management/lifecycle changes, global static state isolation, anti-patterns (FindObjectOfType, etc.), resource cleanup/event unsubscription
- **P1**: Business logic branches, performance-sensitive paths (Update/FixedUpdate), O(N²) patterns, error handling/edge cases, new public methods or classes
- **P2**: Pure getters/setters/logging/comments, test code, config value tweaks

**Key rule**: Each review item appears only in **the phase that introduced it** — do not repeat it in later phases.
If a later phase modifies code from an earlier phase, annotate it in that later phase as "modifies Phase X's ...".

### 6. Generate Document C: Review Guide

Generate `REVIEW_GUIDE.md` (no timestamp, overwrite each time), with content dynamically populated based on documents already present in the current directory.

Format:
```markdown
# Review Guide

> Branch: `<branch>`
> Generated: `<timestamp>`

## Document Index

| Document | Perspective | Purpose |
|----------|-------------|---------|
| `timeline-arch_<ts>.md` | Timeline × Architecture | Understand how the architecture evolved in development order |
| `timeline-review_<ts>.md` | Timeline × Review | Review code phase by phase, each with a file list |
| `arch-review_<ts>.md` | Final state × Architecture | Final architecture overview + module heatmap (if exists) |
| `pr-review_<ts>.md` | Final state × Review | Full final P0/P1/P2 list (if exists) |

If a document does not exist, annotate in the table "Not generated — run `/qq:brief` to generate".

## Reading Order

### Scenario A: First time looking at this branch

Use when: just picked it up, cross-team review, or returning after a long break

1. **timeline-arch** — follow the timeline to understand "how it got to this state", build a mental model
2. **arch-review** — view the final architecture overview and confirm the model is complete
3. **timeline-review** — review code phase by phase (use the quick reference to pick high-risk phases first)
4. **pr-review** — final scan from the final-state perspective to catch systemic risks across phases

### Scenario B: Already familiar with the branch, reviewing code directly

Use when: self-reviewing your own code, routine incremental review

1. **timeline-review** — quick reference → pick phases with most P0s → file list → review each item
2. **pr-review** — catch what was missed: the final-state perspective may reveal cross-phase combination risks

> Skip the two arch documents in Scenario B — you already know the architecture.

## Self-Review Workflow

```
Run /qq:timeline
  ↓
Open timeline-review, check the quick reference table
  ↓
Select phases in descending P0 count order (review highest-risk phases when most focused)
  ↓
For each Phase:
  1. Open the "Files to Review" table → open all P0 files
  2. Go through P0 items one by one → verify against the code
  3. Quickly scan P1 → only check items marked "Suggestion"
  4. Skip P2 (unless there's a question)
  5. Found an issue → fix it → commit
  ↓
All phases reviewed
  ↓
Run /unity-compile + /qq:test to verify
  ↓
Optional: run /qq:brief to generate final-state docs for last-pass coverage
  ↓
Merge
```

## Time Budget

Summarize from the `timeline-review` quick reference table:

| Phase | Estimated Time |
|-------|---------------|
| (copied from quick reference) | |
| **Total** | **X min** |
```

### 7. Output

Write three files to `Docs/qq/<branch-name>/`:
- `timeline-arch_<timestamp>.md`
- `timeline-review_<timestamp>.md`
- `REVIEW_GUIDE.md` (no timestamp, overwritten each time)

Branch name rule: use the current branch name, replacing `/` with `_`.
Timestamp format: `YYYY-MM-DD-HHmm`.

## Notes

- Phase grouping is the most critical judgment in this command — poor grouping makes the entire document useless. Take extra time to group well rather than rushing to write content
- The two documents must have completely identical Phase numbers and names for easy cross-reference
- Architecture diagrams show increments, not the accumulated state — reviewers should be able to see "what was added in this phase"
- If a Phase has no architecture changes (pure bug fix/UI), briefly note it in the arch document — no need to force a diagram
- If a Phase has no points worth reviewing, note "No additional review needed for this phase" in the review document
- Each Phase's analysis should be based on the actual diff for that phase, not speculation
- For large Phases (>15 commits), you may further split into sub-phases

